MST

星途 面试题库

面试题:Java类继承与多态性之方法重写

在Java中,子类重写父类方法时需要遵循哪些规则?请举例说明。
37.0万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试
  1. 方法签名必须相同
    • 重写方法的方法名、参数列表和返回类型(在JDK 5.0及以上,返回类型可以是协变类型,即子类方法返回类型是父类方法返回类型的子类)必须与父类被重写方法相同。
    • 例如:
class Animal {
    public String makeSound() {
        return "Generic animal sound";
    }
}
class Dog extends Animal {
    @Override
    public String makeSound() {
        return "Woof!";
    }
}
  1. 访问修饰符限制
    • 子类重写方法的访问修饰符不能比父类被重写方法的访问修饰符更严格。
    • 比如父类方法是protected,子类重写方法可以是protectedpublic,但不能是private
    • 示例:
class Parent {
    protected void display() {
        System.out.println("Parent display");
    }
}
class Child extends Parent {
    @Override
    public void display() {
        System.out.println("Child display");
    }
}
  1. 不能抛出比父类更多的异常
    • 子类重写方法不能抛出比父类被重写方法更多的异常,或者不能抛出比父类被重写方法声明的异常更宽泛的异常类型。
    • 例如:
class Vehicle {
    public void start() throws Exception {
        System.out.println("Vehicle started");
    }
}
class Car extends Vehicle {
    @Override
    public void start() throws RuntimeException {
        System.out.println("Car started");
    }
}

这里父类start方法声明抛出Exception,子类重写的start方法可以抛出RuntimeException(因为RuntimeExceptionException的子类)。