用Java覆盖成员变量(变量隐藏)我正在研究用Java重写成员函数,并考虑尝试重写成员变量。所以,我定义了类public class A{
public int intVal = 1;
public void identifyClass()
{
System.out.println("I am class A");
}}public class B extends A{
public int intVal = 2;
public void identifyClass()
{
System.out.println("I am class B");
}}public class mainClass{
public static void main(String [] args)
{
A a = new A();
B b = new B();
A aRef;
aRef = a;
System.out.println(aRef.intVal);
aRef.identifyClass();
aRef = b;
System.out.println(aRef.intVal);
aRef.identifyClass();
}}产出如下:1I am class A1I am class B我不明白为什么Aref设置为b intVal仍然属于A类?
3 回答
呼唤远方
TA贡献1856条经验 获得超11个赞
Java中的字段没有多态性。
Variables
繁星点点滴滴
TA贡献1803条经验 获得超3个赞
重写函数:在本例中,假设父类和子类的名称与自己的定义相同。但是,哪个函数将执行它取决于对象类型,而不是运行时的引用类型。
Parent parent=new Child();parent.behaviour();
parent
Child child=new Child();child.behaviour();
child
Parent parent=new Parent();parent.behaviour();
parent
覆盖变量:Java支持重载变量。但实际上,这是两个同名的不同变量,一个在父类中,一个在子类中。这两个变量可以是相同的数据类型,也可以是不同的数据类型。
Parent parent=new Child();System.out.println(parent.state);
Child child=new Child();System.out.println(child.state);
Parent parent=new Parent();System.out.println(parent.state);
添加回答
举报
0/150
提交
取消