In Typoskript ist diese Recht Code:Warum darf der geschützte Zugriff in einer Basisklasse für den öffentlichen Zugriff in einer abgeleiteten Klasse geändert werden?
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);
}
}
Dies würde jedoch beispielsweise in C#, illegal sein. In TypeScript ist das Wechseln von public zu protected jedoch nicht zulässig.
Was ist der Grund dafür, dass eine geschützte Funktion als öffentliche Funktion in einer abgeleiteten Klasse verfügbar gemacht wird? Aus C# und Java kommend ergibt es für mich keinen Sinn, die Zugriffsebene eines Mitglieds überhaupt ändern zu dürfen.
Klare Antwort, danke. – Sam