多态-转型

多态的转型可以分为向上转型与向下转型两种:

向上转型:当有子类对象赋值给一个父类引用时,便是向上转型,多态本身就是向上转型的过程。

使用格式:

父类类型   变量名  =    new    子类类型();

如:Person   p   =       new   Student();

向下转型:一个已经向上转型的子类对象可以使用强制类型转换的格式,将父类引用转为子类引用,这个过程是向下转型。如果直接创建父类对象,是无法向下转型的!

使用格式:子类类型   变量名   =  (子类类型)   父类类型的变量;

如:  Student   stu  =(Student)   p;   //变量  p  实际上指向Student 对象 


什么时候使用向上转型:

当不需要面对子类类型时,通过提高扩展性,或者使用父类的功能就能完成相应的操作,这时就可以使用向上转型

如 :Animal   a    =  new  Dog();

a.eat();

什么时候使用向下转型

当要使用子类特有功能时,就需要使用向下转型。

     如:Dog  d =  (Dog)a;//向下转型

d.lookHome();//调用Dog类的lookHome 方法

向下转型的好处:可以使用子类特有的功能

弊端是:需要面对具体的子类对象;在向下转型时容易发生ClassCastException类型转换异常。在转换之前必须做类型判断

if(!(a  instanceof Dog)){//判断当前对象是否为Dog类型
System.out.println("类型不匹配,不能转换");
return;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值