在编程语言和类型论中,多态(英语:polymorphism)指为不同数据类型的实体提供统一的接口。 多态类型(英语:polymorphic type)可以将自身所支持的操作套用到其它类型的值上。
面向对象的三大特征:封装性、继承性、多态性,多态性就是多态,多态是在封装的升华,可以说没有封装就么有多态。
extends继承或者implements实现,无论是类与类之间的继承、类与接口之间的实现还是接口与接口间的继承,反正总会出现上下的层次关系,这种关系的产生就是多态性出现的前提。
为了更好的明白什么是多态,来个小demo吧!
🍓🍓多态demo场景:有学生、老师、超级管理员,难道每一个都要重复写吗,这个岂不是很繁琐,维护起来很困难,若干年后当做diamagnetic重构的时候可能你都不想看你的代码了吧,应该是真的很繁琐,很复杂。
下面我们将创建三个子类【Student、Teacher、Administrator】和一个父类【Person】以及一个测试函数。
父类,包含普通的变量和一个show方法。
Person.java
package DT.demo1;public class Person {private String name;private int age;public Person() {}public Person(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public void show(){System.out.println(name+","+age+"展示");}}学生类,继承父类属性和方法并重写父类show方法
Student.java
package DT.demo1;public class Student extends Person{@Overridepublic void show() {System.out.println("学生的信息"+getName()+","+getAge());}}老师类,继承父类属性和方法并重写父类show方法
Teacher.java
package DT.demo1;public class Teacher extends Person{@Overridepublic void show() {System.out.println("老师的信息"+getName()+","+getAge());}}超级管理员类,继承父类属性和方法并重写父类show方法 Administrtors.java
package DT.demo1;public class Administrtors extends Person{@Overridepublic void show() {System.out.println("管理员的信息"+getName()+","+getAge());}}为了不需要重写我们只需要new出想要的对象然后传入即可。这样就算后面需要添加