程序覆写(Override)是指 子类对父类中同名的方法(方法名称、参数列表和返回类型都相同)进行重新定义的过程。通过覆写,子类可以提供自己特有的实现,从而覆盖父类的方法行为。覆写是面向对象编程中多态性的一个体现,它允许在运行时根据对象的实际类型来调用相应的方法。
覆写需要满足以下条件:
方法签名相同:
子类方法的方法名、参数列表和返回类型必须与父类中的方法完全一致。
访问权限:
子类方法的访问权限不能低于父类方法。例如,如果父类方法是`public`的,那么子类方法也必须是`public`的。
不能覆写final方法:
父类中的方法如果被声明为`final`,则子类不能对其进行覆写。
抽象方法必须覆写:
在抽象类中,如果存在抽象方法,则其具体子类必须实现这些抽象方法,这也是一种覆写。
覆写的主要作用包括:
代码复用:
子类可以继承父类的属性和方法,同时通过覆写实现自己的特定功能。
多态性:
通过覆写,可以在运行时根据对象的实际类型动态地选择调用哪个方法,增加了程序的灵活性和可扩展性。
```java
class A {
public void print() {
System.out.println("A类中的print方法");
}
}
class B extends A {
@Override
public void print() {
System.out.println("B类中的print方法");
}
}
public class TestDemo {
public static void main(String[] args) {
B b = new B();
b.print(); // 输出: B类中的print方法
}
}
```
在这个例子中,`B`类覆写了`A`类的`print`方法,因此当通过`B`类的对象调用`print`方法时,会执行`B`类中的实现。