java中的重写和重载有什么区别,请举例子
时间: 2023-07-14 18:10:57 浏览: 137
在Java中,重写(Override)和重载(Overload)是两种不同的方法实现方式。
重写(Override)是指在子类中重新定义父类的方法,方法名、参数列表和返回类型必须与父类方法一致,目的是改变方法的实现逻辑。重写实现了多态性,即通过父类引用调用子类对象的方法时,实际执行的是子类中重写的方法。
示例:
```java
class Animal {
public void makeSound() {
System.out.println("Animal makes sound");
}
}
class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("Cat meows");
}
}
public class Main {
public static void main(String[] args) {
Animal animal = new Animal();
animal.makeSound(); // 输出: Animal makes sound
Cat cat = new Cat();
cat.makeSound(); // 输出: Cat meows
Animal animal2 = new Cat();
animal2.makeSound(); // 输出: Cat meows
}
}
```
重载(Overload)是指在同一个类中,通过改变方法的参数列表来定义多个同名方法。重载方法具有相同的方法名,但参数类型、参数个数或参数顺序不同。重载实现了静态多态性,即在调用方法时根据传入的参数类型或个数来确定具体调用哪个方法。
示例:
```java
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;
}
}
public class Main {
public static void main(String[] args) {
Calculator calculator = new Calculator();
System.out.println(calculator.add(2, 3)); // 输出: 5
System.out.println(calculator.add(2.5, 3.5)); // 输出: 6.0
System.out.println(calculator.add(2, 3, 4)); // 输出: 9
}
}
```
总结:
重写(Override)是通过子类重新定义父类方法的实现逻辑,实现运行时多态性;重载(Overload)是在同一个类中定义多个同名方法,通过参数列表的不同来区分方法的调用。
阅读全文