Java中多态

如果不适用子类中的特有方法,只是使用父类中的方法,则用向上转型。

如果要用子类中的特有方法,那我们只能用向下转型。

体现:

父类的引用指向了子类的对象

Dog  d=new Dog();//Dog对象的类型就是Dog类型。

Animal   a=new Dog();//右边是Dog类型,左边是Animal类型。

好处:

提高了程序的扩展性。

弊端:

通过父类引用子类对象,只能引用父类中已经有的方法,不能引用子类的方法。

前提:

1、必须有关系:继承、实现。

2、通常都有重写的操作。

 

子类对象特有的方法,如何在多态中实现?

Animal  a =new Dog();//Animal是父类型,new Dog()是子类型。但是父类型的引用指向子类型的时候,这就让子类对象进行了类型的提升(向上转型)。

向上转型的好处:提高了扩展性,隐藏了了子类型。弊端:不能引用子类的方法。如果想要使用子类的方法,只能向下转型。

Animal   a=new Dog();

a.eat();

Dog d=(Dog)a;----向下转型

d.lookHome()

当需要子类对象特有的内容的时候,我们可以使用向下转型。无论向上还是向下都是子类对象做着转型(new 对象)。

 

向下转型必须注意的事项:

Animal  a=new dog();

Cat c=(Cat) a;向下转型因为不明确具体的子类型,所以容易引发ClassCastException异常。所以为了避免这个问题,需要在向下转型前,做类型的判断。

判断类型有关键字  instanceof

If(a instanceof cat ){

Cat c=(Cat)a;

c.catchMouse();

}

Else if (a insance dog){

Dog d =(Dog) D;

d.lookhome();

}

转载于:https://my.oschina.net/CLOWN001/blog/857273

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值