我在Java程序中遇到了一个错误,因为我不明白隐藏了继承。
我的错误归结为:
class Animal {
int numPaws = 4;
}
class Snake extends Animal {
int numPaws = 0;
}
class Runner {
public static void main(String[] args) {
Snake s = new Snake();
/* There two different copies of this variable,
but no override warning as there would be with a method. */
System.out.println(s.numPaws);
System.out.println(((Animal)s).numPaws);
}
}
现在我想问:
如果我使用方法执行此操作,则会收到警告并告知使用@Override装饰器。为什么我没有变量警告?
将来如何检查?
为什么Java不提供警告系统?或者,为什么它允许变量?