面向对象——多态

1.什么是多态

  • 一个对象有多种表示形态

  • 一个是表示自己的类型,还有表示自己父类的类型

Dog dog1 = new Dog();Animal dog2 =new Dog(); //Dog对象也可以赋值给父类型变量来表示


2.多态的特点

  • 子类对象赋值给父类类型运行时,表现的是子类特征

88be441cdc453c318eb7ac5e4d16b4996b4.jpg

  • 注意:

        1.多态形式的特点展现是对重写方法,因为在编译时是找当前变量类是否有这个方法。上图Animal类型的变量去调用eat(),如果Animal中没有eat()编译不会通过会报错。编译通过之后,运行时就直接先在对象本身类Dog中去找找不到再到父类

        2.字段没有多态形式,变量是什么类型就找到那个类的字段

        3.静态也没有因为在还没有开始执行就加载到了方法区,直接就是变量的类来调用


3.多态的好处

  • 继承,方法的重写加上多态的表达使代码的扩展性大大提高。调用方只管调用,不管细节,而当我们新增一种Animal的子类时,只要确保重写方法编写正确,不用管原来的代码是如何调用的。

  • 没有使用多态的代码

pulic class Person{  void feedDog(Dog dog){    dog.eat();   }   void feedCat(Cat cat){     cat.eat();   }   public static void main(String[] args){      Person per = new Person();      Dog dog = new Dog();      per.feedDog(dog);            Cat cat = new Cat();      per.feedCat(cat);   }}
  • 使用多态后的代码

public class Person{  void feedAnimal(Animal anim){    anim.eat();  }  public static void main(String[] args){    Person per = new Person();    Animal dog - new Dog();        Animal cat = new Cat();    per.feedAnimal(cat);  }}
  • 通过父类接受各个类,执行时还是它们各个类重写的方法






本文分享自微信公众号 - IT那个小笔记(qq1839646816)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值