简述方法的重载和方法的覆盖的区别,并举例说明
时间: 2024-03-16 09:43:48 浏览: 89
JAVA方法覆盖与重载的区别.doc
方法的重载(Overloading)和方法的覆盖(Override)都是面向对象编程中常用的概念,具有不同的用途和特点。
方法的重载指的是在同一个类中定义多个同名的方法,但是它们的参数列表不同(类型、个数、顺序等),编译器会根据实际参数的类型和数量来决定调用哪个方法,从而实现多态。重载方法的返回类型和访问修饰符可以相同也可以不同,但是方法名和参数列表必须不同。例如:
```java
public class Calculator {
public int add(int a, int b) {
return a + b;
}
public double add(double a, double b) {
return a + b;
}
public int add(int a, int b, int c) {
return a + b + c;
}
}
```
上述代码中,Calculator 类中定义了三个名为 add 的方法,每个方法的参数列表不同,可以根据实际需要来调用不同的方法。
方法的覆盖指的是在子类中定义一个与父类中同名、参数列表相同、返回类型相同或是子类类型的方法,从而覆盖父类中的同名方法,称为方法的覆盖。覆盖方法必须和被覆盖方法的访问修饰符相同或者更宽松,不能更严格。覆盖方法可以使用 super 关键字调用父类的同名方法,也可以重写父类的方法实现。例如:
```java
public class Animal {
public void move() {
System.out.println("Animal can move");
}
}
public class Dog extends Animal {
public void move() {
super.move();
System.out.println("Dog can run and walk");
}
}
```
上述代码中,Animal 类中定义了一个 move 方法,然后在 Dog 类中覆盖了该方法,并且使用 super.move() 调用了父类的 move 方法,从而在输出中同时显示了 Animal 和 Dog 的 move 方法。
阅读全文