Skip to content

方法重写(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)父类必须一样相同子类重写的方法,返回的类型和父类返回的类型一致,或者是其它类子类方法不能缩小父类方法的访问范围