方法重载(Overloading)
方法重载是指在同一个类中定义多个方法,它们具有相同的名字但参数列表不同。这是通过改变参数的数量、类型的种类或次序来实现的。例如:
public class OverloadingExample {
// 方法重载可以通过参数的数量来区分
public void method(int i, float f) {
System.out.println("整数: " + i + ", 浮点数: " + f);
}
public void method(int i) {
System.out.println("整数: " + i);
}
public void method(float f) {
System.out.println("浮点数: " + f);
}
}
在这个例子中,method 方法被重载了三次,每次接收不同的参数。
方法覆写(Overriding)
方法覆写是指在子类中重新定义父类中的方法。覆写的方法必须拥有与父类中完全相同的签名,这意味着它必须有相同的名称、参数列表和返回类型。例如:
class BaseClass {
public void method(int i) {
System.out.println("这是基类方法: " + i);
}
}
class SubClass extends BaseClass {
// 方法覆写需要相同的签名
@Override
public void method(int i) {
System.out.println("这是子类方法: " + i);
}
}
在这个例子中,SubClass 类覆写了 BaseClass 中的 method 方法。
关键区别
1.重载 发生在同一个类中,而 覆写 发生在不同的类层级之间(通常是子类和父类之间)。
2.重载的方法可以有不同的返回类型,而覆写的方法必须有相同的返回类型。
3.重载的方法没有访问修饰符的限制,而覆写的方法不能比父类方法更严格的访问修饰符。
4.重载是编译时多态,而覆写是运行时多态。