Java 多态
多态是同一个行为具有多个不同表现形式或形态的能力。
也可以说它就是同一个接口,由于使用的实例不同而执行不同操作。
**举个例子:**我去拿笔写字儿。如果我拿的是红笔,写出来的字是红色的;如果我拿的黑笔,写出来的字就是黑色的。“我用笔写字”这个事件是相同的,只是用了不同的笔而已,得出来的效果是不同的。
再举个例子,我拿手机去打王者荣耀。我拿按键机和一个高端智能机,显然按键机是莫得办法去玩耍的,但用智能机却能玩。都是用手机玩王者,只是因为手机不同,结果也不相同。
注意这里是 由于 对象 的不同而产生不同的结果
多态的优点: 消除类型之间的耦合关系、可替换性、可扩充性、接口性、灵活性、 简化性
多态存在的三个必要条件:
- 继承
- 重写
- 父类引用指向子类对象:Parent p = new Child();
当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。
多态的好处:可以使程序有良好的扩展,并可以对所有类的对象进行通用处理。
说实话,有点绕,最开始我也是整的有点晕。在这里我盗了一图
这个样子理解起来会好很多。
当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。
重写
当子类对象调用重写的方法时,调用的是子类的方法,而不是父类中被重写的方法。
要想调用父类中被重写的方法,则必须使用关键字 super。