java类如何重写
重写 Java 类的方法
在 Java 中,重写(Override)是指子类重新定义父类中已有的方法,以实现特定的功能。重写方法必须遵循一定的规则,确保方法的签名与父类方法一致。
方法签名一致
子类重写的方法必须与父类方法的名称、参数列表和返回类型完全相同。返回类型可以是父类方法返回类型的子类(协变返回类型)。
class Parent {
public void display() {
System.out.println("Parent's display");
}
}
class Child extends Parent {
@Override
public void display() {
System.out.println("Child's display");
}
}
访问修饰符不能更严格
子类重写方法的访问修饰符不能比父类方法的访问修饰符更严格。例如,父类方法是 protected,子类方法可以是 protected 或 public,但不能是 private。
class Parent {
protected void show() {
System.out.println("Parent's show");
}
}
class Child extends Parent {
@Override
public void show() {
System.out.println("Child's show");
}
}
异常处理限制
子类重写方法不能抛出比父类方法更多的检查异常(checked exceptions),但可以不抛出异常或抛出运行时异常(unchecked exceptions)。
class Parent {
void method() throws IOException {
// some code
}
}
class Child extends Parent {
@Override
void method() throws FileNotFoundException { // FileNotFoundException 是 IOException 的子类
// some code
}
}
使用 @Override 注解
推荐在重写方法上使用 @Override 注解,这样编译器会检查该方法是否正确地重写了父类方法。如果方法签名不一致,编译器会报错。

class Child extends Parent {
@Override
public void display() {
System.out.println("Child's display");
}
}
注意事项
- 静态方法不能被重写,因为静态方法属于类级别,而非实例级别。
- 私有方法(
private)不能被重写,因为私有方法对子类不可见。 final方法不能被重写,final关键字禁止方法被覆盖。
通过遵循上述规则,可以确保 Java 类的重写行为正确且符合面向对象的设计原则。






