方法重写(Override)
基本介绍
(1)方法重写也成为方法覆盖
(2)子类和父类中的方法名、形参、返回类型一样,则称子类的整个方法覆盖了父类的方法
使用细节
(1)子类方法的形参列表,方法名称,要和父类方法的形参列表和方法名称完全一样
(2)子类方法的返回类型和父类方法返回类型一样,或者是父类返回类型的子类
例如:子类的返回类型是 String ,父类的返回类型是 Object,这也构成了方法的重写
(3)子类的方法不能缩小父类方法的访问权限,可以扩大父类的访问权限或者保持一致
关系:public > protected > 默认 > private
代码示例
java
//父类
package praoveride;
public class father {
private void show() {
System.out.println("调用了父类中访问权限为private的show()方法");
}
}
//子类
package praoveride;
import prac.father;
public class son extends father {
public void show() {
System.out.println("调用了子类的show()方法");
}
}
//主类
package praoveride;
public class main {
public static void main(String[] args) {
son son = new son();
son.show();
}
}代码分析
(1)父类使用 private 访问权限,子类使用 public 访问权限,子类可以扩大父类的访问权限或者相同,但是不能缩小父类的访问权限
(2)子类的方法和父类的 show()方法构成了方法重写,优先在子类中寻找是否有 show()方法,如果没有就找到上一级(直到 Object),直到找到了 show()方法就调用,如果都没有则报错
⭐ 区分重写与重载
| 名称 | 发生范围 | 方法名 | 形参列表 | 返回类型 | 修饰符 |
|---|---|---|---|---|---|
| 重载(overload) | 本类 | 必须一样 | 类型、个数或者顺序至少有一个不同 | 无要求 | 无要求 |
| 重写(override) | 父类 | 必须一样 | 相同 | 子类重写的方法,返回的类型和父类返回的类型一致,或者是其它类 | 子类方法不能缩小父类方法的访问范围 |
