方法重载(overload) v.s. 方法重写(override)��
在Java中,方法重载(Overloading)和方法重写(Overriding)是两种不同的概念,它们在用途和实现方式上都有所不同。
方法重载(Overloading)
- 定义:方法重载是指在同一个类中存在多个方法名相同但参数列表不同(参数数量不同或参数类型不同)的方法,和返回类型无关。
- 作用域:重载的方法在同一个类中。
- 返回类型:重载方法可以有不同的返回类型,但仅靠返回类型不同不能实现重载。
- 示例:
public class Example {
public void display(int a) {
// ...
}
public void display(int a, int b) {
// ...
}
public double display(double a) {
// ...
return a;
}
}
方法重写(Overriding)
- 定义:方法重写是指子类有一个与父类方法签名完全相同的方法,用于覆盖父类的同名方法。
- 作用域:重写发生在子类和父类之间。
- 返回类型:重写方法的返回类型必须与被重写方法的返回类型相同,或者是其子类。
- 访问修饰符:重写方法的访问修饰符不能比被重写方法的访问修饰符更严格。
- 示例:
public class Parent {
public void display() {
System.out.println("Parent display");
}
}
public class Child extends Parent {
@Override
public void display() {
System.out.println("Child display");
}
}
主要区别
- 范围:重载发生在同一个类中,而重写发生在子类和父类之间。
- 参数列表:重载方法的参数列表必须不同,而重写方法的参数列表必须相同。
- 返回类型:重载方法可以有不同的返回类型,重写方法的返回类型必须相同或者是其子类。
- 访问修饰符:重载方法可以有不同的访问修饰符,重写方法的访问修饰符不能比被重写方法更严格。
- 异常:重载方法可以声明不同的异常,重写方法声明的异常必须与被重写方法的异常相同或者是其子类。
总的来说,方法重载是编译时多态的体现,而方法重写是运行时多态的体现。
标签:重写,修饰符,display,重载,方法,public From: https://blog.csdn.net/qq_48973099/article/details/143619093