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

本文详细解释了Java中的重写和重载概念,包括它们的区别(重写关注继承关系,子类重写父类方法;重载关注参数,类内定义多个同名方法),并通过示例阐述了如何在实践中应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

重写(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)关注的是方法的参数类型和个数,通过提供不同的参数来处理不同的情况,在同一个类中定义多个方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值