java中的多态实例_java中对于多态的一个实例分析

a98e1917b320594b78cf2c17f8d7a792.png

首先来看这样的一段代码,其中对于类的定义如下:

classParent{public int myValue=100;public voidprintValue() {

System.out.println("Parent.printValue(),myValue="+myValue);

}

}class Child extendsParent{public int myValue=200;public voidprintValue() {

System.out.println("Child.printValue(),myValue="+myValue);

}

}

我们来一个一个的回答问题:

1.

620546fe2582aa4fb41edcaa0f3087f1.png

运行结果如图

2.对于这个运行结果的解释,第一行第二行都是正常的调用,第三行中,将child赋给了parent 再进行的输出,这时候我们发现结果变成了200 并且输出语句也变了。

第四句,执行了parent.myValue++;但结果并没有改变。第五行中,将parent类强行转换为子类后又进行了自增,结果变成了201.

3.对于这里的分析,我们发现子类赋值给父类是没有问题的,也就是说子类完全可以直接转换成父类。第四行的语句结果还是200,说明他对于myValue的++还是调用了父类中的Value,但最后还是输出了子类的Value.说明子类赋给父类后,只是一部分替代,并不是完全覆盖。第五句里,将父类转换成子类然后进行++,第四句第五句结合起来,可以说明子类赋值给父类,并不是所谓的覆盖,只是把原本的东西给隐藏了罢了。而强制转换后则不同,直接变成了子类。

最后,这其实告诉我们在实际应用中,我们不应该把父类和子类设置成相同的源代码和成员变量,对于程序员在编程时的理解十分不利。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值