java如何重写方法
重写方法的基本概念
在Java中,方法重写(Override)是指子类重新定义父类中已有的方法,以实现特定的功能。重写方法必须遵循一定的规则,否则会导致编译错误。
重写方法的规则
方法名、参数列表和返回类型必须与父类中被重写的方法完全相同。
访问修饰符不能比父类中被重写的方法更严格。例如,父类方法是protected,子类方法可以是protected或public,但不能是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 obj = new Child();
obj.display();
}
}
使用@Override注解
@Override注解用于明确表示方法是被重写的。如果方法签名与父类方法不匹配,编译器会报错。
class Child extends Parent {
@Override
public void display() {
System.out.println("Child's overridden display method");
}
}
重写与重载的区别
重写(Override)发生在父子类之间,方法名和参数列表必须相同。重载(Overload)发生在同一个类中,方法名相同但参数列表不同。

class Example {
// 重载
public void show(int a) {
System.out.println(a);
}
public void show(String a) {
System.out.println(a);
}
}
动态绑定与重写
Java通过动态绑定实现方法重写。运行时根据对象的实际类型调用相应的方法。
Parent obj = new Child();
obj.display(); // 调用Child类的display方法
注意事项
静态方法不能被重写,只能被隐藏。私有方法不能被重写,因为它们在子类中不可见。
构造方法不能被重写,因为构造方法不是继承的。
final方法不能被重写,因为final修饰的方法禁止子类修改。






