重载(Overloading)
是指在同一个类中,可以定义多个具有相同名称但参数列表不同的方法。它允许使用相同的方法名,但根据不同的参数个数、类型或顺序,执行不同的操作。
重载方法通过方法签名(包括方法名和参数列表)来进行识别和区分。
重载的特点:
- 同一个类中的方法名称相同,但参数列表不同。
- 重载方法可以有不同的返回类型。
- 重载方法通过方法签名区分和识别。
重载示例(Java):
通过方法的重载,可以根据传入不同的参数执行不同的操作。
public class Calculator {
//定义add 方法,需要传入int a,b 两个参数
public int add(int a, int b) {
return a + b;
}
//定义add 方法,需要传入double a,b 两个参数
public double add(double a, double b) {
return a + b;
}
//定义add 方法,需要传入int a,b,c 三个参数
public int add(int a, int b, int c) {
return a + b + c;
}
}
public static void main(String[] args) {
Calculator calculator= new Calculator ();
calculator.add(1,2); // 调用2个int 型参数方法
calculator.add(0.5,0.6); // 调用带2个double型参数的方法
calculator.add(1,2,3); // 调用带三个字符串参数的方法
}
重写(Overriding)
指在继承关系中,子类可以重新定义父类中的方法。子类重写的方法具有相同的名称、参数列表和返回类型,但可能有不同的实现。
通过方法的重写,可以实现多态性,即在调用方法时,根据对象的实际类型来确定执行哪个方法。
重写的特点:
- 子类中的方法与父类中的方法具有相同的名称、参数列表和返回类型。
- 重写方法提供了不同的实现,覆盖了父类中的方法。
- 子类对象调用该方法时,会优先执行子类中的方法。
重写示例(Java):
//父类Animal定义了一个makeSound方法
public class Animal {
public void makeSound() {
System.out.println("Animal makes sound");
}
}
public class Dog extends Animal {
//子类Dog重写了makeSound方法,提供了不同的实现
@Override
public void makeSound() {
System.out.println("Dog barks");
}
}
public static void main(String[] args) {
Animal animal1 = new Animal ();
animal1.display(); // 输出:父类的display方法
Dog Dogs= new Dog ();
Dogs.display(); // 输出:子类的display方法
}
区别
- 重载(Overloading)是指在同一个类中定义多个方法,方法名称相同但参数列表不同,用于提供不同的操作方式。
- 重写(Overriding)是指在继承关系中,子类重新定义父类中的方法,使得子类对象在调用该方法时执行不同的实现。