Java:子类能否重写父类中的属性值?
程序员文章站
2022-06-09 14:50:34
...
Java:子类能否重写父类中的属性值?
首先,让我们来看一个例子,大家可以猜测下输出结果是什么。
1.父类
public class FatherClass {
String info="FatherClass";
}
2.子类
public class SonClass extends FatherClass{
String info="SonClass";
}
3.测试方法
public static void main(String[] args) {
FatherClass father=new FatherClass();
System.out.println(father.info);
SonClass son=new SonClass();
System.out.println(son.info);
FatherClass son2=new SonClass();
System.out.println(son2.info);
}
上述代码的输出结果如下:
FatherClass
SonClass
FatherClass
奇怪的是,我们确实创建了两个Sub对象,但是第二个输出的结果却是Super。这是因为上面的例子中定义了一个隐藏字段。
在子类中,与父类中的字段具有相同名称的字段为隐藏字段,即使它们的类型不同。
从上述定义中,我们可以知道成员字段不能像方法一样被重写。当子类定义具有相同名称的字段时,该子类仅声明一个新字段。超类中的字段是隐藏的。它没有被重写,所以它不能被多态访问。
注意: 在子类中,父类中的字段不能通过其简单名称引用。相反,该字段必须通过父类访问。一般来说,我们不建议隐藏字段,因为它使代码难于阅读。
参考:
下一篇: hibernate之JPA入门篇
推荐阅读