java重写后如何使用
重写方法的基本概念
在Java中,重写(Override)是指子类重新定义父类中已有的方法,以改变或扩展该方法的行为。重写的方法必须与父类方法具有相同的名称、返回类型和参数列表。
重写方法的规则
方法重写必须遵循以下规则:
- 方法名、参数列表和返回类型必须与父类方法完全一致。
- 访问修饰符不能比父类方法更严格(例如,父类方法是
protected,子类方法可以是public或protected,但不能是private)。 - 子类方法抛出的异常不能比父类方法抛出的异常更宽泛。
如何使用重写方法
定义父类和子类
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 parent = new Parent();
parent.display(); // 输出: Parent's display method
Child child = new Child();
child.display(); // 输出: Child's display method
Parent polymorphicChild = new Child();
polymorphicChild.display(); // 输出: Child's display method
}
}
使用super关键字调用父类方法
在子类中,可以通过super关键字调用父类中被重写的方法。

class Child extends Parent {
@Override
public void display() {
super.display(); // 调用父类的display方法
System.out.println("Child's display method");
}
}
重写方法的实际应用场景
- 多态性:通过重写方法,可以在运行时根据对象的实际类型调用相应的方法,实现多态。
- 扩展功能:子类可以在父类方法的基础上添加新的功能或修改原有功能。
- 接口实现:实现接口时,必须重写接口中定义的所有方法。
注意事项
- 使用
@Override注解可以确保方法确实是重写了父类的方法,如果方法签名不匹配,编译器会报错。 - 静态方法不能被重写,只能被隐藏。
- 构造方法不能被重写。
- 私有方法不能被重写,因为它们在子类中不可见。






