Java对象向上转型和向下转型

1、对象向上转型

定义

子类引用的对象转换为父类类型称为向上转型,通俗的说就是是将子类将子类对象转换为父类对象,此处父类对象可以是接口。
指向子类的父类引用由于向上转型了,它只能访问父类中拥有的方法和属性,而对于子类中存在而父类中不存在的方法,该引用时不能使用的,尽管是重载该方法。若子类重写了父类中的某些方法,在调用该方法的时候,必定是使用子类中定义的这些方法(动态链接,动态调用)

解释

比如我有两个类,一个父类Animal,另一个子类Bird
Animal b = new bird();

2、对象向下转型

定义

父类引用的对象转换为子类类型成为向下转型

所以向下转型过程中要注意的是:
情况一:如果父类引用的对象如果引用的是指向的子类对象,那么在向下转型的过程中是安全的,也就是编译是不会出错误的。
情况二:如果父类引用的对象是父类本身,那么在向下转型的过程中是不安全的,编译不会出错,但是运行时会出现java.lang.classcastException的错误,她可以使用instanceof来避免出此类错误

解释

比如我有两个类,一个父类Animal,另一个子类Bird
Animal a = new Animal();
Birds b= (Bird)a;

3.隐式转型

如int可以自动在计算和赋值时转型成为long,float可以自动的转型成为double,我们并不需要去关心,但是如果从高精度转到低精度就会丢失数据,所以无法隐式转型
比如下面的转型栗子
因为1是int型变量,精度比short类型要高,因此不能隐式的将int转为short
short a = 1;//并不能这么干
但是使用+=,++运算可以隐式转换
a+=1;
因为上面的语句相当于
a=(short)(a+1);

4.总结

1.父类引用可以指向子类对象,子类引用不能指向父类对象。
2.把子类对象直接赋给父类引用叫upcasting向上转型,向上转型不用强制转型
3.把指向子类对象的父类引用赋给子类引用叫向下转型downcasting,要强制转型
4.upcasting会丢失子类特有的方法,但是子类overriding父类的方法,子类方法是有效的
5.向上转型作用:减少重复代码,父类作为参数,调用时用子类作为参数,就是利用了向上转型,可以使得代码更简洁

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值