定义
顾名思义,就是多种表现状态
最直观的理解:有对象名称,用对象名称打点调用方法
在不同的时候执行的方法的功能是不一样的.
多态的判断标准
- 跨类且继承,多态是以继承作为基础的
- 子类重写长辈的方法
- 子类对象赋值给长辈的引用
比如:
CommonPerson cp = new Student();
Person p = new Student();
Object obj = new Student(); - 用长辈的引用打点调用方法
- 用对象打点能调用出哪些方法,取决于这个对象所对应的类或接口中有哪些方法
- 如果用长辈的引用打点调用的方法,是重写过得方法,那么就执行子类重写后的方法
- 如果长辈的引用打点调用的方法是没有重写的方法,则执行本长辈中的方法
多态的应用场景
-
以长辈作为方法或函数的参数
-
以长辈作为方法或函数的返回值
如果不用多态:
缺点:
- 代码的书写量大
- 结构不优化
- 代码的复用率低
最终导致开发效率低
优点: - 代码的可读性高
如果使用多态:
- 把所有的公有属性抽象出来,放在长辈类中,用于表示数据的吞吐
- 把所有的公有方法抽象出来放在接口中,用于表示功能
- 会增加类和类之间的关系,类和类之间的复杂度增高
- 使用多态可以提高代码的复用率
- 使用多态可以大大提高开发效率
- 使用多态,程序的结构优化