Java多态理解:浅显易懂~

Java多态理解:

这几天学习到多态,就和python里面的感觉有挺多不一样,开始一直不理解,翻了好几个文章,都没能理解这句话:当使用多态调用方法时,首先检查父类是否有该方法,如果没有则编译错误,如果有,就去调用子类同名方法。

今天终于在Head First Java上面找到灵感了。

首先看多态存在的必要条件:

  • 继承

  • 重写 (子类重写父类方法,签名必须相同)

  • 父类引用指向子类对象:Parent p = new Child();

第三条说Parent p是父类的引用,new Child()是子类对象。我们知道对象的引用是放在栈中的,真正的对象存放在堆中。通过引用可以操作这个对象,那么,重点来啦!!!

我们可以把引用当作遥控器,把真正的对象当作电视,通过遥控器控制电视。

接着就是根据父类引用指向子类对象:Parent p = new Child();。假设父类是第一代电视机,子类是第二代电视机。那么他们对象的引用分别是第一代遥控器和第二代遥控器 

Parent p = new Child();的意思就是用第一代遥控器控制第二代电视!!!

  1. 当使用多态调用方法时,首先检查父类是否有该方法,如果没有则编译错误

即第一代遥控器本身为第一代电视设计,肯定没有控制音量大小的按键,你如果硬要改变音量肯定报错。

     2. 后半句话:如果有,就去调用子类同名方法。

两种遥控器都有增强画质按键,用第一代控制器控制第二代电视机增强画质,肯定是变成蓝光!

猜你喜欢

转载自blog.csdn.net/qq_46927284/article/details/119830997