Java中的父类和子类可以具有相同的实例变量吗?
问题内容:
考虑以下类:
class Parent {
int a;
}
class Child extends Parent {
int a; // error?
}
由于多个的声明,a
in 的声明Child
不应该给出编译错误int a
吗?
问题答案:
child.a
阴影 (或 隐藏物 )parent.a
。
这是合法的Java,但应避免使用。我希望您的IDE可以为您提供警告。
但是请注意,这只是一个问题,因为您已经向世界公开了一个 变量
。如果确保所有变量都是私有变量(将方法的API与字段的实现分开),那么父级和子级都具有相同的字段名就没关系-
子级不会仍然能够看到父母的字段。如果将方法从子级移到父级,可能会造成混乱,并且通常不易读,但比隐藏情况要好。