对象变量多态性:上转型对象和下转型对象

对象变量多态性:上转型对象和下转型对象

上转型对象

  1. 上转型对象只能访问父类中声明的成员变量和成员方法,不可以访问子类新增的特有的成员变量和成员方法。

  2. 如果子类重写了父类的方法,则上转型对象调用该方法时,必定是调用重写的方法。

  3. 如果子类重新定义了父类的同名变量,则上转型对象应用该变量时是父类中的定义的变量,而不是子类中定义的变量。

下转型对象

将父类对象赋值给子类对象变量的情况称为向下转型。子类对象有上转型对象,父类变量才可以直接调用子类的对象;但是如果父类中没有下转型对象,子类变量不能被直接引用父类对象,必须通过强制转换,将上转型对象还原回子类对象。

例如:定义一个Dog父类,定义两个子类Ala和Keji。

Dog类代码:
Dog类

Keji类代码:
在这里插入图片描述

Ala类代码:
在这里插入图片描述
Test测试类代码:
在这里插入图片描述
结果:
在这里插入图片描述

如果要实现子类,以前需要实例化一个对象,就像Keji
keji=new Keji();

再用对象keji调用all方法,Ala也一样,非常麻烦。

用上转型对象可以更简便的调用。

格式:父类类名 父类对象=new 子类类名();

再用父类对象.方法();调用方法。

Dog dog=new Keji(“柯基”,15);
Dog.all();
调用的是Keji类中的all方法,Keji类中的all方法还有super.all(),再调用了父类Dog里的all方法。
dog=new Ala(“阿拉斯加”,1);
将指向Keji的具体实现指向Ala,然后再调用Ala类里的all方法。

如果在Keji中再创建一个子类特有方法
在这里插入图片描述

在Test测试类中调用是会报错的

在这里插入图片描述

所以要用下转型对象来调用
格式为 子类类名 子类对象=(子类类名)父类对象;
然后再用子类对象.方法名();调用。

在Test类中用子类对象调用
在这里插入图片描述

结果:

在这里插入图片描述

第一次写,写的不好,错了请指导。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值