导航:首页 > 编程语言 > java成员变量的覆盖

java成员变量的覆盖

发布时间:2023-12-17 17:51:27

‘壹’ 如何理解Java中的隐藏与覆盖

隐藏与覆盖类方法
在讲清这个问题之前,先明白什么是隐藏?什么是覆盖?
所谓隐藏,是指运行时系统调用当前对象引用的编译时类型中定义的方法;对于覆盖,则指运行时系统调用当前对象引用运行时类型中定义的方法。
所以在执行Student1
s
=
new
Graate1();和Graate1
g
=
new
Graate1();时,(1)先进行Student1类的构造,这里包括两个方法study()和exercise(),由于study()方法被覆盖,所以先执行Graate1里study(),再执行Student1里的exercise();(2)再进行Graate1类的构造,同样包括两个方法study()和exercise(),所以执行顺序为先Graate1里的study()方法,再Graate1里的exercise()方法。
2.
隐藏与覆盖成员变量
如果子类中的变量和父类中的变量具有相同的名字,那么子类中的变量就会隐藏父类中的变量,不管他们的类型是什么,也不管他们是类变量还是实例变量。
所以在执行诸如System.out.print(s.math);之类的s实例的程序时,显示为Student1类的成员变量,而执行诸如System.out.print(g.math);之类的g实例的程序时,显示为Graate1类的成员变量。

‘贰’ JAVA成员变量隐藏和方法的覆盖

从入口程序main开始看,第一句话是
Subclass Subc=new Subclass();
其作用是实例化Subclass类的一个实例出来,使用的构造函数是无参构造函数。

现在转向看Subclass类,在这个类的无参数构造函数中代码如下:
Subclass(){
super();//A
x=5;//B
System.out.println("in Subclass:x="+x);//②
}
可以看得见第一句使用的是super()方法,起作用是继承父类Superclass的构造方法:
Superclass(){
x=3;
System.out.println("in Superclass:x="+x);//①
}
也就是说Subclass()方法代码内容是如下的内容:
Subclass(){
x=3;
System.out.println("in Superclass:x="+x);//①
x=5;//B
System.out.println("in Subclass:x="+x);//②
}

所以现在这里有两个输出语句,结果如下:
in Superclass:x=3
in Subclass:x=5

现在返回入口程序main()方法,开始执行该方法中的第二句话:
Subc.dosomething();
这句话的作用是执行Subclass类中的dosomething方法,所以我们查看Subclass类的方法void dosomething()内容如下:

super.dosomething();
System.out.println("in Subclass.dosomething()");
System.out.println("super.x="+super.x+"\tsub.x="+x);

可以看到,第一句话super.dosomething();是继承父类的dosomething()方法,用父类的这个方法内容替换掉这句话,void dosomething()内容如下:

System.out.println("in Superclass.dosomething()");//③
System.out.println("in Subclass.dosomething()");//④
System.out.println("super.x="+super.x+"\tsub.x="+x);//⑤

所以这里就是连续输出三句话:
in Superclass.dosomething()
in Subclass.dosomething()
super.x=3 sub.x=5

一定要知道super的作用,super()就是使用父类的构造函数,super.属性/s uper.方法,就是使用父类属性/方法。

阅读全文

与java成员变量的覆盖相关的资料

热点内容
电脑作为服务器怎么配置 浏览:93
磨砂壳文件夹 浏览:980
b2c开源源码 浏览:56
电脑qq压缩文件解压缩失败 浏览:177
大龄女程序员想转行 浏览:99
聚币交易所app怎么充值 浏览:163
加密文件如何解除加密iPad 浏览:922
太极张三丰怀旧源码 浏览:105
2016考研大纲pdf 浏览:67
程序员sdk算法 浏览:526
程序员听诊技巧 浏览:622
从技术走向管理pdf 浏览:822
思科命令行模式删除用户 浏览:568
一号玩家app怎么换绑 浏览:325
emm平台源码 浏览:330
从网页下载资料服务器地址 浏览:408
安卓用什么播放器可以看港剧 浏览:458
keil5一编译axf就缺失了 浏览:510
现代电机控制技术pdf 浏览:453
手机系统加密形同虚设是真的吗 浏览:743