1
在打字稿这是合法的代码:为什么要将基类中的受保护访问更改为派生类中的公共访问权限?
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#中是非法的,例如。然而,在公共文件中保护是不允许的。
允许将受保护的函数作为派生类中的公共函数公开的原因是什么?从C#和Java开始,我根本无法改变成员的访问级别。
明确的答案,谢谢。 – Sam