java动态添加例题,java--------动态的经典例题

多态一:

什么是动态:

同一行为的多种不同表达,或者同一行为的多种不同实现就叫做多态。

1)Person,Student,Teacher之间的关系

2)有一个“车”的父类,宝马继承自车,奔驰继承自车。那么反过来,车可以是宝马,也可以是奔驰,具有不同的形态,这种现象就叫多态。  如,我要上街买个东西,请你给我一辆车,这时你传给我的车(一个Car对象,形参)的一个实例(实参)就是多态(可以有不同的实现,宝马、奔驰、自行车等都可以)。

3) “笔”是父类,钢笔、铅笔、圆珠笔都是子类。这时,如果请你给我一支笔,你可以给任意一支笔。

运行规则:

方法覆盖后出现的运行时多态,其运行规则是:编译时看数据类型,运行时看实际的对象类型(new谁调谁)。

多态二:

匹配原则:

先: 确保参数完全匹配O的前提下,依次匹配this与super。

再: 考虑参数用super(O)渐近匹配O,依次匹配this与super

当: 存在子类覆盖父类方法时,根据new子类实例的原则,先调子类方法。

匹配顺序:

this.show( O )    super.show( O )    this.show( super(O) )    super.show( super(O) )

多态经典例题:

匹配顺序: this.show(O), super.show(O),

this.show(super(O)), super.show(super(O))

1)先确保参数完全匹配O的前提下,依次匹配this与super。

2)再考虑参数用super(O)渐近匹配O,依次匹配this与super

3)当存在子类覆盖父类方法时,根据new子类实例的原则,先调子类方法。

public class TestDT{

public static void main(String args[]){

A a1 = new A();

A a2 = new B();

B b = new B();

C c = new C();

D d = new D();

System.out.println(a1.show(b)); // ① A and A

System.out.println(a1.show(c)); // ② A and A

System.out.println(a1.show(d)); // ③ A and D

System.out.println(a2.show(b)); // ④ B and A

System.out.println(a2.show(c)); // ⑤ B and A

System.out.println(a2.show(d)); // ⑥ A and D

System.out.println(b.show(b)); // ⑦ B and B

System.out.println(b.show(c)); // ⑧ B and B

System.out.println(b.show(d)); // ⑨ A and D

}

}

3d24c42af13a4da499c6ce5cc5d052a7.png

版权声明:本文为博主原创文章,未经博主允许不得转载。希望大家多指教指教

原文:http://blog.csdn.net/yangxin_blog/article/details/49679081

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值