Java类型转换

1. 明确引用类型与对象类型的概念

例如:ADHero ad = new ADHero();
其中ad为引用,引用类型时ADHero,new ADHero()则是一个对象,对象类型是ADHero。接下来要讨论的类型转换的问题,指的是引用类型和对象类型不一致的情况下的转换问题。

2. 子类转父类(向上转型)

所有的子类转换为父类都可行

3. 父类转子类(向下转型)

父类转子类,有的时候行,有的时候不行,所以必须进行强制转换。
强制转换的意思就是 转换有风险,风险自担。

3.1 什么时候行

当父类引用所指的对象是子类或子类的子类类型时则可以
例如: ADHero extends Hero

1.        Hero h =new Hero();
2.        ADHero ad = new ADHero();
3.        h = ad;
4.        ad = (ADHero) h;

其中经过第3行后,h引用所指向的对象的类型是ADHero类型,所以h强转为ADHero类型是可行的。

3.2 什么时候不行

除了上述行的条件其余都不行

4. 没有继承关系的两个类,互相转换

没有继承关系的两个类,互相转换,一定会失败

5. 实现类转换成接口(向上转型)

实现类转换成接口一定可行

6. 接口转换成实现类(向下转型)

与3情况相同,若“=”右边引用所指向的接口是“=”左边引用接口类型的实现类则可以,否则不行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值