Java中属性的隐藏与方法的覆盖的区别
发布网友
发布时间:2022-04-22 11:28
我来回答
共2个回答
热心网友
时间:2023-06-23 02:08
成员变量是没法继承的,而方法可以继承。
首先a对象是animal类的对象,所以两个变量的输出的是animal类的成员变量。其中a.a,调用的静态方法所以a.a和animal.a是一样的。而且animal.a更为标准。
再看方法。由于method类是静态方法,所以a.method就是animal.method;而voice方法在cat类中被覆写,所以调用cat类中的方法,如果要访问父类animal的voice方法应该用super关键字调用。
热心网友
时间:2023-06-23 02:08
我明白你想问的意思。我先这样回答下,看你的基础够不够看懂,如果不懂就再问,email我也行。
在C++中,数据成员(属性)可以隐藏,函数成员(方法)既可以隐藏也可以覆盖(通过关键字virtual)。
在Java中,动态编联始终是打开的(相当于始终有一个virtual在方法前面)。所以Java中的方法没办法隐藏,只能覆盖。
可以对比一下C#,它通过一套关键字virtual、new、override,实现了既能隐藏方法,又能覆盖方法。