Java-多态

多态:

多态并非多状态,而是多形态,子类既可以作为子类形态,也可以作为父类形态
如:一只猫既可看做猫,也可以看做动物

代码中体现多态:

一、父类引用指向子类对象(对象的向上转型)
格式:左侧父类的引用,指向右侧子类的对象:
父类名称 对象名 = new 子类名称();
或者:    接口名称 对象名 = new 实现类名称()
Animal animalA = new Cat();
Animal animalB = new Dog();
即将一个子类当做父类使用(把一个猫看做动物使用)
这样调用的时候,无论是猫还是狗,其参数类型都是其父类动物,更为方便。
二、对象的向下转型:(将父类还原成为本来的子类对象)
格式:
子类名称 对象名 = (子类名称) 父类对象
Cat cat = (Cat) animalA;
1.必须保证对象创建时就是猫,才能向下转型成为猫
2.若本来不是猫,非要向下转型成猫,会报错(类转换异常) 如:Cat cat = (Cat) animalB;
故使用instanceof关键字进行类型判断,可判断该animalA是否是猫:

        if (animalA instanceof Cat) {
            Cat cat = (Cat) animal;
        } 
        if (animalA instanceof Dog) {
            Dog dog = (Dog) animal;
        }

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值