淘先锋技术网

首页 1 2 3 4 5 6 7

在java中,覆盖(override)和重载(overload)这两个概念都很常见。虽然它们的名称相似,但是它们的含义是不同的。

覆盖(override)的含义是,在子类中定义一个与父类中同名同参数的方法,覆盖掉父类中的方法。子类对象在调用这个方法时,会优先调用子类中的方法。这个过程就是子类对父类方法的覆盖。具体实现方法是:在子类中定义一个与父类中同名同参数的方法,并且加上@Override注解。这个注解表示这个方法是在覆盖父类中的方法。

public class Animal {
public void move() {
System.out.println("Animal is moving");
}
}
public class Dog extends Animal {
@Override
public void move() {
System.out.println("Dog is running");
}
}
public class Main {
public static void main(String[] args) {
Animal animal = new Animal();
animal.move(); // 输出 Animal is moving
Dog dog = new Dog();
dog.move(); // 输出 Dog is running
}
}

重载(overload)的含义是,在同一个类中定义多个同名但参数不同的方法。Java编译器会根据方法的参数类型和个数自动判断调用哪一个方法。具体实现方法是:在同一个类中定义多个同名的方法,但参数的类型、数量、顺序不同。这样就可以实现方法的重载。

public class Calc {
public int add(int a, int b) {
return a + b;
}
public double add(double a, double b) {
return a + b;
}
public String add(String a, String b) {
return a + b;
}
}
public class Main {
public static void main(String[] args) {
Calc calc = new Calc();
int result1 = calc.add(1, 2); // 调用 add(int a, int b) 方法
double result2 = calc.add(1.1, 2.2); // 调用 add(double a, double b) 方法
String result3 = calc.add("Hello", "World"); // 调用 add(String a, String b) 方法
}
}

总结:Java中的覆盖和重载是实现多态的两个手段,可以让程序更加灵活和可扩展。