一、多态的定义
多态就是一个事物多种形态,就是同一符号或名字在不同的情况下具有不同解释的一种现象。
比如同一个行为具有多个不同表现形式或形态的能力也叫做多态,同一个接口,使用不同的实例而执行不同操作也叫做多态。
那么为什么需要多态呢?原因有以下几点:
1、实现代码复用,避免代码的冗余,方便后期对代码的修改;
2、解决项目中耦合问题;
3、提高程序的可扩展性,能够通过重写子类的方法,使不同的对像具有不同的功能。
多态的优点:
1. 消除类型之间的耦合关系
2. 可替换性
3. 可扩充性
4. 接口性
5. 灵活性
6. 简化性
多态可以提高代码的可扩展性和可复用性,还可以使程序有良好的扩展,并可以对所有类的对象进行通用处理。
二、多态的实现方式
1、用抽象类实现多态
抽象类和抽象方法实现多态性
父类提供一系列规定, 约束子类的行为
父类可以提供一些共性的行为
2、用接口实现多态
举例说明一下:我们把声卡、网卡或者电视卡都可以通过PCI的插槽与其进行连接,从而实现不同的功能,前提条件是它们都满足了PCI插槽的接口的要求。再比如java的接口,或者生活中我们使用的插座,国内和国外的插座规格是不一样的,因此出国都会必备一个对应国家的插座转换器。
抽象类与接口的区别:
抽象类是一类事物的高度聚合,那么对于继承抽象类的子类来说,对于抽象类来说,属于“是”的关系;
接口是定义行为规范,因此对于实现接口的子类来说,相对于接口来说,是“行为需要按照接口来完成”。
总结:
1、多态是指子类可以替换父类,在实际代码运行过程中调用子类的方法实现;
2、多态可以通过"子类继承父类+子类重写父类方法+父类引用指向子类对象"的方式实现,另外还可以通过"接口语法"的方式实现;
3、当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。
参考链接:https://www.runoob.com/java/java-polymorphism.html