java 如何覆盖
方法重写(Override)
在Java中,方法重写是指子类重新定义父类中已有的方法。重写的方法必须具有相同的方法签名(方法名、参数列表和返回类型),并且访问修饰符不能比父类更严格。
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");
}
}
方法重载(Overload)
方法重载是指在同一个类中定义多个同名方法,但这些方法的参数列表不同(参数类型、数量或顺序不同)。返回类型可以不同,但不能仅凭返回类型区分重载方法。

class Example {
public void show(int a) {
System.out.println("Integer: " + a);
}
public void show(String a) {
System.out.println("String: " + a);
}
}
属性覆盖(Field Shadowing)
Java中不支持真正的属性覆盖,但子类可以声明与父类同名的属性,此时子类属性会“遮蔽”父类属性。访问时取决于引用类型。

class Parent {
String name = "Parent";
}
class Child extends Parent {
String name = "Child";
}
// 使用时
Parent obj = new Child();
System.out.println(obj.name); // 输出 "Parent"
静态方法“覆盖”
静态方法不能被重写,因为它们是类级别的方法。子类可以声明与父类相同的静态方法,但这实际上是隐藏父类方法,而不是重写。
class Parent {
static void print() {
System.out.println("Parent's static method");
}
}
class Child extends Parent {
static void print() {
System.out.println("Child's static method");
}
}
注解使用
在重写方法时,建议使用@Override注解,这可以帮助编译器检查是否确实重写了父类方法,避免因拼写错误等问题导致意外行为。
@Override
public void display() {
// 方法实现
}






