多态:引用类型转换

6种基础数据类型:byteshortintlongfloatdouble的相互转换规则,即:当从低精度数据类型向高精度数据类型转换时,实行自动转换,这种类型转换技术称为向上转换;当从高精度数据类型向低精度数据类型转换时,需要使用强制类型转换符执行强制转换,这种称为向下转换

当然,对于引用数据类型,这种转换技术也是适用的。

对于引用数据类型,在父类和子类的继承层次关系中,沿着子类向父类转换是向上转型,是自动转换的;而沿着父类向子类转型是向下转型,必须使用强制类型转换。

以下是对于父类与子类的继承关系

父类相对于子类来说是大范围的类型,Animal是父类,CatDog是子类,所以对于子类Animal来说,它的范围更大,包含一切动物,包括Cat类和Dog类。

1.向上转型(自动转换):当子类向父类转型时,子类范围更小,所以可以直接自动转换,这个过程是默认的。而多态中,当父类引用指向一个子类对象时,就是向上转型,是自动转换的。对于

Animal animal = new Cat(); 这条语句,是子类Cat向父类Animal转型,属于向上转型,是隐式自动发生,所以不会有问题。

2.向下转型(强制转换):向下转型就是由父类向下转型的过程,这个过程是强制的。一个需要将父类对象转为子类对象,可以使用强制类型转换的格式,这便是向下转型。

比如:

Animal animal = new Cat();
Cat cat = (Cat) animal;
cat.playBall();// 访问猫咪的特有⽅法
System.out.println(cat.food); // 访问猫咪的特有字段

合并一下,就是:

Animal animal = new Cat(); 
((Cat) animal).playBall();
System.out.println(((Cat) animal).food);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值