多态(对象)

多态(对象)

entends 继承 或者 implements 实现,是多态性的前提

多态性的体现

其实就是一句话 : 父类引用指向子类对象

  1. 格式:
  2. 父类名称 对象名 = new 子类名称 ();
  3. 或者:
  4. 接口名称 对象名 = new 实现类名称 ();

访问成员变量方式 有两种

  1. 直接通过子类对象访问 成员变量:

    等号左边是谁,就优先用谁,没有则向上找

  2. 间接通过成员方法访问 成员变量:

    . 该方法属于谁,就优先用谁,没有就向上找(new 了谁)

访问成员方法的规则:

  1. 创建的对象是谁,就优先用谁,如果没有则向上找

对比:

成员变量:编译看左边,运行还看左边

成员方法 :编译看左边,运行看右边

多态好处

在这里插入图片描述

向上转型

所谓向上转型,就好比你把 一直兔子说成是一只动物,是大集合 包含 小集合的关系。

一定是安全的—> 小范围 到 大范围

在这里插入图片描述

弊端: 无法调用子类方法

解决方案 : 使用对象的向下转型 还原

向下转型

所谓向下转型,也就是 大集合 —>小集合的过程。创建一只猫,把它当作动物看没问题。

现在给你一只动物(实际上是只猫),你想让这只动物上树,应该使用哪种动物的姿势呢。

此时我们就需要 用instance 来判断它是不是猫,如果是猫,就可以将动物看作猫,让猫上树。

否则,让一只不是猫的动物,让它上树,就会出现问题。
在这里插入图片描述
在这里插入图片描述

instanceof(向下转型一定要用)

如何才能知道 一个父类引用的对象,本来是什么子类?

格式:

  1. 对象 instanceof 类名称

这将会得到一个 boolean 值结果,也就是判断前面的 对象能不能当作后面类型的实例
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值