📅  最后修改于: 2023-12-03 15:16:38.202000             🧑  作者: Mango
在Java中,方法的重写是面向对象编程中的重要概念之一。当子类继承自父类时,可以通过重写父类的方法来实现对父类方法的覆盖和修改。这种重写需要用到Java中的@Override
注解。
当一个子类继承自父类时,如果它需要修改父类中的某个方法,可以通过重写(override)这个方法来实现。
public class Animal {
public void eat() {
System.out.println("Animal is eating.");
}
}
public class Dog extends Animal {
@Override
public void eat() {
System.out.println("Dog is eating.");
}
}
在上面的代码中,子类Dog
重写了父类Animal
中的eat()
方法。在Dog
类中,使用了@Override
注解来标注这是一个重写方法。在运行时,当我们调用Dog
对象的eat()
方法时,将会输出Dog is eating.
这句话。
当子类重写父类的方法时,需要遵守以下几条规则:
在上面的代码中,子类Dog
重写了父类Animal
中的eat()
方法,因为方法名、参数列表和返回类型都与父类相同。如果在Dog
类中定义一个public void eat(String food)
方法,那么它并不会重写Animal
类中的eat()
方法,因为它的参数列表和父类不同。
当父类中的方法是静态方法时,子类不能重写父类的静态方法。另外,父类中的final方法也不能被子类重写。
public class Animal {
public static void eat() {
System.out.println("Animal is eating.");
}
public final void sleep() {
System.out.println("Animal is sleeping.");
}
}
public class Dog extends Animal {
// This will not compile
public static void eat() {
System.out.println("Dog is eating.");
}
// This will not compile
public void sleep() {
System.out.println("Dog is sleeping.");
}
}
在重写方法时,需要注意以下事项:
在实际开发中,需要根据具体情况来选择是否重写父类方法。如果需要对父类的行为进行修改或扩展,那么重写方法就是一个很好的选择。