多态和转型

多态:

1  .   多态是指一个事物有不同的表现形式或形态。

2  .   多态存在的三个必要条件:要有继承、要有重写、父类变量引用子类对象。

People obj = new People();  // 引用父类实例

   obj.say();    //父类里面的方法

obj = new Teacher();  // 引用子类实例

   obj.say();   //子类里面的方法

 

3   .   当使用多态方式调用方法时:
         首先检查父类中是否有该方法,如果没有,则编译错误;如果有,则检查子类是否覆盖了该方法。
         如果子类覆盖了该方法,就调用子类的方法,否则调用父类方法。

转型:

1  .   在继承链中,我们将子类向父类转换称为“向上转型”,将父类向子类转换称为“向下转型”。

很多时候,我们会将变量定义为父类的类型,却引用子类的对象,这个过程就是向上转型。程序运行时通过动态绑定来实现对子类方法的调用,也就是多态性。

然而有些时候为了完成某些父类没有的功能,我们需要将向上转型后的子类对象再转成子类,调用子类的方法,这就是向下转型。

注意:不能直接将父类的对象强制转换为子类类型,只能将向上转型后的子类对象再次转换为子类类型。也就是说,子类对象必须向上转型后,才能再向下转型。

Test2 obj1 = new Test2();
  obj1.show();

Test3 obj2 = (Test3)obj1;  //向下转型
  obj2.show(1);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值