重载(Overloading):位于同一个类之中,方法名相同,参数列表不同,参数的类型不同,返回值可以相同或不同;特征:
- 方法名必须相同;
- 参数列表一定不同;
- 访问修饰符和返回值类型可以相同也可以不同;
重写(Overriding):子类继承父类时需要重写父类的方法,方法名相同(返回值类型相同),参数相同,具体的实现不同,特征:
- 方法名必须相同,参数列表必须相同,返回值类型必须相同;
- 访问权限不能比父类中被重写的方法的访问权限低;
- 子类与父类在同一个包中,那么子类可以重写父类所有方法,除了final和private方法
- 构造方法不能被重写;
区别点 | 重载 | 重写 |
---|---|---|
发生范围 | 同一个类 | 子类中 |
参数列表 | 必须修改 | 一定不能修改 |
返回类型 | 可更改 | 不能更改 |
访问修饰符 | 可更改 | 一定不能做更严格的限制(可以降低限制) |
发生阶段 | 编译期 | 运行期 |