java重写与重载的区别

在Java中,重写(Override)和重载(Overload)是两种不同的概念:

  1. 重写(Override):
    • 重写是指子类重新定义(覆盖)了从父类继承而来的方法。
    • 重写要求子类方法与父类方法具有相同的方法名、参数列表和返回类型。
    • 重写可以修改或扩展父类方法的功能,但不能改变方法的签名。
    • 重写可以利用多态性,在运行时根据对象的实际类型调用对应的方法。

示例代码:

class Animal {
    
    
    public void makeSound() {
    
    
        System.out.println("Animal makes sound");
    }
}

class Dog extends Animal {
    
    
    @Override
    public void makeSound() {
    
    
        System.out.println("Dog barks");
    }
}

Animal animal = new Dog();
animal.makeSound(); // 输出:"Dog barks"
  1. 重载(Overload):
    • 重载是指在同一个类中,可以定义多个同名但参数列表不同的方法。
    • 重载方法的特点是参数个数、类型或顺序不同。
    • 编译器根据方法的参数列表决定调用哪个重载方法。
    • 重载可以提供更灵活的方法调用方式,方便处理不同情况下的不同逻辑操作。

示例代码:

class Calculator {
    
    
    public int add(int a, int b) {
    
    
        return a + b;
    }

    public double add(double a, double b) {
    
    
        return a + b;
    }
}

Calculator calculator = new Calculator();
int result1 = calculator.add(5, 3);          // 调用 int add(int a, int b)
double result2 = calculator.add(2.5, 4.7);   // 调用 double add(double a, double b)

通过重写和重载,可以实现代码的灵活性和可扩展性。重写用于在子类中修改父类方法的行为,实现特定的逻辑;重载用于定义多个相似功能但参数不同的方法,提供更多选择。

猜你喜欢

转载自blog.csdn.net/drhnb/article/details/132252181