在Java中,方法重写是指在子类中重新定义父类的方法,以实现更具体的功能或适应子类的需求。方法重写要满足以下条件:
1. 方法名和参数列表必须与父类中被重写的方法相同。
2. 返回类型必须与父类中被重写的方法相同,或者是其子类类型。
3. 访问修饰符不能严格限制访问性,但可以更宽松,例如,父类方法为public,则子类方法可以是public或protected。
(注意:父类私有的函数子类无法重写)
4. 子类方法抛出的异常类型必须与父类方法相同或是其子类。
以下是一个示例,展示了如何在Java中重写方法:
```java
class Animal {
public void sound() {
System.out.println("Animal makes sound");
}
}
class Dog extends Animal {
@Override
public void sound() {
System.out.println("Dog barks");
}
}
public class Main {
public static void main(String[] args) {
Animal animal = new Animal();
animal.sound(); // 输出 "Animal makes sound"
Dog dog = new Dog();
dog.sound(); // 输出 "Dog barks"
}
}
```
在上面的示例中,Animal类有一个sound()方法,而Dog类继承自Animal类并重写了sound()方法。当创建Animal对象并调用sound()方法时,输出为"Animal makes sound",而创建Dog对象并调用sound()方法时,输出为"Dog barks"。