JAVA方法的覆盖与域的隐藏有何不同?
发布网友
发布时间:2022-04-22 11:28
我来回答
共1个回答
热心网友
时间:2023-07-16 03:38
隐藏与覆盖类方法
在讲清这个问题之前,先明白什么是隐藏?什么是覆盖?
所谓隐藏,是指运行时系统调用当前对象引用的编译时类型中定义的方法;对于覆盖,则指运行时系统调用当前对象引用运行时类型中定义的方法。
所以在执行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类的成员变量。