java如何复写
复写(Override)的概念
复写是指子类重新定义父类中已有的方法,以实现不同的功能。复写的方法必须与父类方法具有相同的名称、参数列表和返回类型(或是其子类)。
复写的基本规则
- 方法名、参数列表必须与父类方法完全一致。
- 访问修饰符不能比父类方法更严格(例如父类方法是
public,子类方法不能是private)。 - 返回类型可以是父类方法返回类型的子类(协变返回类型)。
- 不能复写
final、private或static方法。
复写示例代码
class Parent {
public void display() {
System.out.println("Parent's display method");
}
}
class Child extends Parent {
@Override
public void display() {
System.out.println("Child's display method");
}
}
public class Main {
public static void main(String[] args) {
Parent obj = new Child();
obj.display(); // 输出: Child's display method
}
}
使用 @Override 注解
@Override 注解用于显式标记复写的方法,帮助编译器检查方法是否符合复写规则。如果方法签名不匹配,编译器会报错。

复写与重载的区别
- 复写(Override):子类重新定义父类方法,方法签名必须一致。
- 重载(Overload):同一类中定义多个同名方法,参数列表不同。
注意事项
- 复写方法可以抛出与父类方法相同的异常或其子类异常,但不能抛出更宽泛的异常。
- 静态方法属于类级别,不能复写,但可以隐藏(通过重新定义)。
- 构造方法不能复写。
通过复写,子类可以灵活扩展或修改父类的行为,这是多态性的重要体现。






