重写超类的实例变量
2022-09-01 11:11:34
为什么我们不能重写子类中超类的实例变量?
他可能打算尝试覆盖用于初始化变量的值。例如
public abstract class A {
String help = "**no help defined -- somebody should change that***";
// ...
}
// ...
public class B extends A {
// ILLEGAL
@Override
String help = "some fancy help message for B";
// ...
}
public abstract class A {
public String getHelp() {
return "**no help defined -- somebody should change that***";
}
// ...
}
// ...
public class B extends A {
@Override
public String getHelp() {
return "some fancy help message for B";
// ...
}
因为如果更改数据成员的实现,它很可能会破坏超类(想象一下,将超类的数据成员从浮点数更改为字符串)。