重载方法 | 重写方法 | |
---|---|---|
方法签名 | 参数列表必须修改 | 不能修改 |
返回类型 | 可以修改 | 子类返回值[层次] <= 父类返回值[层次] |
抛出异常 | 可以修改 | 子类抛出异常范围 <= 父类抛出异常范围 |
方法权限修饰符 | 可以修改 | 子类权限 >= 父类权限 |
测试代码如下:
Parent类
public class Parent {
@Override
public String toString() {
return "Parent{}";
}
}
Child类
public class Child extends Parent{
@Override
public String toString() {
return "Child{}";
}
}
Employee类
public class Employee {
public Parent getParent(){
return new Parent();
}
}
Manager类
public class Manager extends Employee{
@Override
public Child getParent() {
return new Child();
}
}
测试
public static void main(String[] args) {
Manager manager = new Manager();
Employee employee = new Employee();
System.out.println(manager.getParent());//Child{}
System.out.println(employee.getParent());//Parent{}
}
得出结论:允许子类将覆盖方法的返回类型定义为父类被覆盖方法原返回类型的子类!!!重写方法的返回类型并不是一定不能修改