1.9 Java复习之多态性

目录

多态性

变量类型转换的类比

多态性应用场景

子类对象的属性无多态性

多态性练习


多态性

 

背景交代:Man类和Women类继承了Person类,且重写了eat和walk方法


变量类型转换的类比

 

Person p1 = new Man();//向上转型

entertainment方法为Man类独有,不满足多态性条件,不能直接

调用,p2.shopping方法同理。

向下转型为women类对象引用即可调用独有方法

p1是Person类(实体为man类),向下转型为woman类,能通过编

译,但执行时显示类型转化异常,因为没有shopping方法(海波哥,苦啊!)


下例,直接向下转型,编译器都通不过,毕竟两类无直接关系

注意instanceof右边是类名

p1是man类实例,所以也是其父类person类的实例,故会输出“你好”

若想通过p1执行entertainment这一子类独有方法,则需要进行判断后向下转型,不能直接调用子类独有方法


多态性应用场景

形参类型只需要设定为父类对象引用,则可传入父类及其子类的对象,可省略大量方法。

1)

举例

不仅可传入animal还可传入dog和cat,实际执行的方法是子类实例重写父类的方法

 

子类对象的属性无多态性

子类与父类属性同名,都会加载到内存中,不存在类似方法的重写或覆盖,所以

Animal a = new Dog();

a.id实际的是父类属性id的值,而不是子类(看左边)


多态性练习

构造器的修饰符:四选一

 

 

注意注释部分,上半部分表示可替换,,下半部分为解释说明

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值