java 子类根据需要重写父类的方法
时间: 2023-09-03 22:13:09 浏览: 109
Java编程关于子类重写父类方法问题的理解
在 Java 中,子类可以根据需要重写父类的方法。这种机制称为方法的重写或覆盖(Override)。
当子类重写一个父类的方法时,子类需要提供一个与父类方法签名(即方法名称、参数列表和返回类型)相同的方法,并且在方法体内提供自己的实现。例如:
```java
class Animal {
void eat() {
System.out.println("动物正在吃东西");
}
}
class Cat extends Animal {
@Override
void eat() {
System.out.println("猫正在吃鱼");
}
}
```
在上面的例子中,我们在 `Cat` 类中重写了 `Animal` 类的 `eat()` 方法。在重写时,我们使用了 `@Override` 注解来表明这是一个重写的方法,而不是新的方法。
当我们使用 `Cat` 类的实例调用 `eat()` 方法时,会优先调用 `Cat` 类中的 `eat()` 方法,而不是 `Animal` 类中的方法。例如:
```java
public static void main(String[] args) {
Animal animal = new Animal();
Cat cat = new Cat();
animal.eat(); // 输出:动物正在吃东西
cat.eat(); // 输出:猫正在吃鱼
}
```
在上面的代码中,我们分别创建了一个 `Animal` 和一个 `Cat` 的实例,并分别调用了它们的 `eat()` 方法。可以看到,虽然 `Cat` 类继承自 `Animal` 类,但它重写了 `eat()` 方法,所以在使用 `Cat` 类的实例时调用的是 `Cat` 类中的方法。
需要注意的是,重写方法时,子类的方法访问修饰符不能比父类的低。也就是说,如果父类的方法是 `public`,那么子类的方法也必须是 `public` 或 `protected`。如果父类的方法是 `protected`,那么子类的方法也必须是 `protected` 或 `public`,不能是 `private`。
阅读全文