搜索
写经验 领红包
 > 育儿

33为什么字段不能被重写了(字段名不能出现重复)

导语:3.3. 为什么字段不能被重写

3.3. 为什么字段不能被重写了(字段名不能出现重复)

这篇文章展示了在java中基本的面向对象概念—字段隐藏。

11.1 字段在java中可以被重写吗

让我们来看下下面的代码例子,它创建了一个子类的对象。一个被赋值为子类引用,另一个被赋值为父类引用。

package oo;class Super { String s = “super”;}Class Sub extends Super {   String s = “Sub”;}Public  class FieldOverriding { Public static void main (String [] args ) {           Sub c1 = new Sub();           System.out.println(c1.s);           Super c2 = new Sub();    System.out.println(c2.s);}//输出为SubSuper

11.2 隐藏属性而不是重写它们

在11.1中 这是个清晰的关于隐藏属性的定义。 在一个类中,如果一个属性和父类属性的名称同名,则隐藏父类的属性,即使它们的类型是不同的。 在子类中,父类属性不能被子类中被相同的名字所引用。相反,这个属性必须通过super来访问。 一般来讲,我们不建议使用隐藏属性,因为这使代码更难阅读了。 从这个定义来看,成员属性不能像方法一样被重写。当一个子类定义一个相同名称的属性的时候,这意味着子类声明了一个新的属性。 父类的属性被隐藏了。它不是重写,所以不能通过多态的方式被访问。

11.3 访问隐藏属性的方法

通过父类引用类型,父类的被隐藏的属性可以被访问,如下。通过转化你可以访问父类中隐藏的属性。
System.out.println((Super)c1.s);

本文内容由小薇整理编辑!