Java中如何重写Superclass方法
在Java中,要重写(Override)超类(Superclass)的方法,需要遵循以下步骤:
-
确保你有一个超类,并且它包含一个你想重写的方法。这个方法可以是
public
、protected
或default
访问修饰符,但不能是private
。 -
在子类中,编写一个与超类中要重写的方法具有相同名称、参数列表和返回类型的方法。如果超类方法的返回类型是泛型,那么子类方法的返回类型应该是相同的泛型或者是它的子类型(协变返回类型)。
-
在子类方法的访问修饰符中,可以选择使用
public
、protected
或default
,但不能使用private
。子类方法的访问级别不能比超类方法更严格。例如,如果超类方法是public
,那么子类方法也必须是public
。 -
如果超类方法抛出异常,那么子类方法可以抛出相同的异常,或者是它的子类。不能抛出新的或更宽泛的异常。
-
在子类方法中,可以使用
@Override
注解。这有助于编译器检查你是否正确地重写了超类方法。如果方法签名不匹配,编译器将发出错误。
下面是一个简单的例子,演示了如何在Java中重写超类方法:
// 超类
class Animal {
public void makeSound() {
System.out.println("The animal makes a sound");
}
}
// 子类
class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("The dog barks");
}
}
public class Main {
public static void main(String[] args) {
Animal myAnimal = new Animal();
Animal myDog = new Dog();
myAnimal.makeSound(); // 输出 "The animal makes a sound"
myDog.makeSound(); // 输出 "The dog barks"
}
}
在这个例子中,Dog
类重写了Animal
类的makeSound()
方法。当我们使用Dog
对象调用makeSound()
方法时,将执行子类中的实现。