В Машинопись это юридический код:Почему изменение защищенного доступа в базовом классе к общедоступному доступу в допустимом производном классе?
class Animal {
name: string;
constructor(theName: string) {
this.name = theName;
}
protected move(distanceInMeters: number = 0) {
console.log(`${this.name} moved ${distanceInMeters}m.`);
}
}
class Snake extends Animal {
constructor(name: string) {
super(name);
}
move(distanceInMeters = 5) {
console.log("Slithering...");
super.move(distanceInMeters);
}
}
class Horse extends Animal {
constructor(name: string) {
super(name);
}
move(distanceInMeters = 45) {
console.log("Galloping...");
super.move(distanceInMeters);
}
}
Однако это было бы незаконным в C#, например. Однако переход от общедоступного к защищенному не допускается в TypeScript.
Какое обоснование разрешено защищать функцию как открытую функцию в производном классе? Исходя из C# и Java, мне не имеет смысла разрешать вообще изменять уровень доступа члена.
Очистить ответ, спасибо. – Sam