java 父类 赋值 子类_JAVA子类赋值到父类,父类成员如何变

classAFinder{publicintID=1;publicvoidFind1(){System.out.println("FindoutA1");}publicvoidFind2(){Find1();}}classBFinderextendsAFinder{publicintID=2;publicvoidFind1(){Syste...

class AFinder

{

public int ID = 1;

public void Find1()

{

System.out.println("Findout A1");

}

public void Find2()

{

Find1();

}

}

class BFinder extends AFinder

{

public int ID = 2;

public void Find1()

{

System.out.println("Findout B1");

}

public void Find3()

{

System.out.println("Findout B2");

}

}

class Test

{

public static void main(String [] args)

{

BFinder B = new BFinder();

AFinder A = B; //子类赋值给父类,父类对象到底变成怎么样了?

System.out.println(A.ID + ", " + B.ID);

A.Find1();

A.Find2();

B.Find1();

B.Find2();

B.Find3();

}

}

A是父类,B是继承的子类,B赋值给A,句柄A的成员到底怎么变的?是转成BFinder类了还是保持AFinder类?

代码的输出结果是:

1, 2

FIndout B1

FIndout B1

FIndout B1

FIndout B1

FIndout B2

很不理解,可以看到,A.Find1()输出的是Findout B1,说明A的方法Find1已经被覆盖了。

然而,A.Find3()却不存在,说明A没有完全转换成B

再看ID,A.ID也仍然是1,保持了A类初始化的ID,没有被B赋值

有没大神可以对输出的每一个结果帮我分析一下,谢谢!

展开

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值