多态是Java面向对象编程的三大特点之一,多态是同一个行为具有多个不同表现形式或形态的能力,通过继承的上下转型、接口的回调以及 方法的重写和重载 可以实现多态。
方法重写
如果从父类继承或接口实现的方法,不满足子类的需求,可以对其进行改写,这就是方法重写。
目的:父类的功能无法满足子类的需求,需要重写功能。
特点:
- 发生在具有子类父类两个关系的类中;
- 方法名相同;
- 参数的列表完全相同;
- 返回值类型可以相同或者是其子类;
- 访问权限修饰符不能够严于父类;
- 抛出的异常不能比父类的异常大;
- 私有修饰符的方法不能被继承,更不能被重写;
- 构造方法不能被重写;
- 是多态的必要条件;
方法重载
重载常用于构造方法中,构造方法重载要求,定义在同一个类中,方法名相同,参数的个数、顺序、类型不同。
目的:解决参数个数、类型、顺序不一致、方法名一致的重命名问题的情况
特点:
- 发生在同一个类中;
- 方法名称相同;
- 参数列表不同;
- 参数的个数、顺序、类型不同;
- 和返回值类型以及访问权限修饰符、异常声明没有关系;
- 是多态的一种表现形式;
- 重载的精确性原则,就是赋给变量值的时候要按照变量的规则赋值;