欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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。这是因为上面的例子中定义了一个隐藏字段

在子类中,与父类中的字段具有相同名称的字段为隐藏字段,即使它们的类型不同。

      从上述定义中,我们可以知道成员字段不能像方法一样被重写。当子类定义具有相同名称的字段时,该子类仅声明一个新字段。超类中的字段是隐藏的。它没有被重写,所以它不能被多态访问。

      注意: 在子类中,父类中的字段不能通过其简单名称引用。相反,该字段必须通过父类访问。一般来说,我们不建议隐藏字段,因为它使代码难于阅读。


参考:

  1. https://mp.weixin.qq.com/s/Ovqb_F2vABeYWrfKCGE4-g