Java——多态的优势与弊端

一、优势:

方法中,参数类型为父类,就可以接收所有子类对象

二、弊端:

创建的父类对象不能使用子类的特定功能

这里对应上文对成员方法的调用:编译看左边,运行看右边

结合这里是什么意思呢?

就是机器在编译代码的时候,对象在调用一个方法的时候,会先到父类中看是否又这个方法,

如果没有该调用的方法,直接报错Bug,

因此如果我们调用子类特有的方法不是在父类内的,就会直接报错!

那么如果我非要用子类的特定方法呢?

有没有什么办法呢?

答案是有的。

怎么做?

和数据类型一样,做强制类型转换

把父类类型的对象强制转换成该子类类型的对象即可

这样对象就变成了子类类型的,就可以调用子类的方法

怎么转换?

关键字:instanceof 
a       instanceof   Dog    d
变量名字 instanceof 类名字 类对象名
作用:判断变量a是不是Dog类型的对象,如果不是,直接返回Flase,是的话直接强转为Dog类型

 代码解释:如果变量a是Dog类型,则返回1;如果不是,直接将之强制转换成d

d就是Dog类型的对象变量,也返回1

但是这里需要注意一点:如果我们原来创建的是一个Dog的对象d,现在却要把a instanceof转换成Cat的类型,这就会报错

只能把父类的类型强制转换成小的子类类型

即大的转换成小的,和数据类型的强转一个道理,只能int 转换成 bety ,而不是别的

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二十5画生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值