// 父类
class Parent {
// 父类中的方法
public void display(String message) {
System.out.println("Parent class: " + message);
}
}
// 子类
class Child extends Parent {
// 方法重载(Overload)
public void display(int number) {
System.out.println("Child class - Overloaded method: " + number);
}
// 方法重写(Override)
@Override
public void display(String message) {
System.out.println("Child class - Overridden method: " + message);
}
}
Overload特点
- 方法名相同:在同一个类(这里是子类
Child
)中,display
方法名相同。
- 参数列表不同:一个
display
方法接受int
类型参数,另一个接受String
类型参数。参数列表的不同包括参数个数、参数类型或参数顺序不同。
- 返回类型和访问修饰符:返回类型可以不同,访问修饰符也可以不同,与是否构成重载无关。
Override特点
- 方法名、参数列表、返回类型相同:子类
Child
中的display(String message)
方法与父类Parent
中的display(String message)
方法名、参数列表、返回类型完全相同(Java 5.0 后,返回类型可以是父类中被重写方法返回类型的子类型)。
- 访问修饰符:子类中重写方法的访问修饰符不能比父类中被重写方法的访问修饰符更严格,例如父类方法是
public
,子类重写方法不能是protected
或private
。
- @Override注解:虽然不是必须的,但使用
@Override
注解可以帮助编译器检查该方法是否正确地重写了父类方法,如果拼写错误或不符合重写规则,编译器会报错。