面向对象3大特征------多态

多态:从字面上理解,就是多种形态,多种状态的含义,在这里,指的是一个对象具有多种形态的特点。说的再简单点,就是一个对象可以从一种类型转换为另外一种类型。有向上转型和向下转型两种形式。

 面试时可以多加一种:方法的多态(重载和重写)

向上造型(向上转型)

父类型的变量引用子类型的对象。

向上转型肯定会成功,是一个隐式转换。

向上转型后的对象,将只能够访问父类中的成员(编译期间,看变量类型)

如果调用的是重写过的方法,那么调用的一定是重写方法(运行期间,看对象)

应用场景:在定义方法时,形式参数是父类型的变量。这样更加灵活,可以传任意子类型的对象

向下转型

父类型变量赋值给子类型的变量,需要强制转换,是一个显式转换。

可能会失败,失败的话,会报类造型异常ClassCastException

为了避免ClassCastException ,可以使用instanceof 来判断:变量指向的对象是否属于某一个类型。

应用场景:

多数情况下,定义方法时,形参都是父类型的变量,原因是可以接受任意子类型的对象

但是有的时候,在这样的方法里的逻辑中,可能会用到该对象的独有功能,因此会涉及到向下转型

  if(am instanceof Cat){  //因为am指向的是一个Dog对象,不属于Cat类型,因此进不去分支。
            // 所以避免了报错
            Cat c = (Cat)am;
            c.getMouse();

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值