java重写与重载的区别详细讲解通俗易懂

发布时间:2024年01月24日

重写(Override)和重载(Overload)是Java中的两个重要概念,它们都涉及到方法的使用和定义。下面我会通俗易懂地解释它们的区别。

重写(Override)指的是在子类中重新定义父类中已经存在的方法,方法名、参数列表和返回类型都必须和父类方法保持一致。重写关注的是继承关系,子类通过重写父类的方法来实现自己特有的功能。重写时,子类中的方法会覆盖父类中同名的方法。
下面是一个简单的例子:
class Animal {
    public void sound() {
        System.out.println("动物发出声音");
    }
}

class Cat extends Animal {
    @Override
    public void sound() {
        System.out.println("喵喵喵");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal animal = new Animal();
        animal.sound(); // 输出:动物发出声音

        Cat cat = new Cat();
        cat.sound(); // 输出:喵喵喵
    }
}
在上面的例子中,Animal类中的sound()方法被Cat类重写了。当我们调用Cat对象的sound()方法时,输出的是"喵喵喵"而不是"动物发出声音"。
重载(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 class Main {
    public static void main(String[] args) {
        Calculator calculator = new Calculator();
        int result1 = calculator.add(2, 3);
        System.out.println(result1); // 输出:5

        double result2 = calculator.add(2.5, 3.7);
        System.out.println(result2); // 输出:6.2
    }
}
在上面的例子中,Calculator类中定义了两个名为add()的方法,一个接受两个int类型的参数,另一个接受两个double类型的参数。当我们调用add()方法时,根据传入的参数类型来确定使用哪个重载的方法。

总结:

? 重写(Override)关注的是继承关系,子类重写父类中已有的方法,覆盖原有实现。
? 重载(Overload)关注的是方法的参数类型和个数,通过提供不同的参数来处理不同的情况,在同一个类中定义多个方法。

文章来源:https://blog.csdn.net/zznn0306/article/details/135818582
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。