java学习之方法重载和方法重写

本文详细解释了Java中的方法重载(同名方法的不同参数列表)和方法重写(子类覆盖父类方法)。介绍了两者在定义、目的和绑定方式上的差异。
摘要由CSDN通过智能技术生成

方法重载(Method Overloading)是指在一个类中可以定义多个同名的方法,但这些方法的参数列表(参数类型、参数个数或参数顺序)必须不同。在调用这些同名方法时,Java编译器会根据传入的参数的类型、个数和顺序来匹配调用相应的方法。

下面是一个简单的方法重载示例:

public class OverloadingExample {

    // 方法重载,接受一个整数参数
    public static void printNumber(int num) {
        System.out.println("Integer number: " + num);
    }

    // 方法重载,接受一个浮点数参数
    public static void printNumber(double num) {
        System.out.println("Double number: " + num);
    }

    // 方法重载,接受一个字符串参数
    public static void printNumber(String num) {
        System.out.println("String number: " + num);
    }

    public static void main(String[] args) {
        printNumber(10);        // 调用接受整数参数的方法
        printNumber(10.5);      // 调用接受浮点数参数的方法
        printNumber("10");      // 调用接受字符串参数的方法
    }
}

在上面的例子中,printNumber 方法被重载了三次,分别接受一个整数、一个浮点数和一个字符串参数。在 main 方法中,我们分别调用了这三个方法,根据传入的参数类型来决定调用哪个重载的方法。

方法重写(Method Overriding)是指在子类中重新定义(覆盖)父类中已经存在的方法,方法名、参数列表和返回类型必须与父类中被重写的方法一致。通过方法重写,子类可以改变父类中方法的行为,实现多态性。

下面是一个简单的方法重写示例:

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

class Dog extends Animal {
    // 重写父类中的sound方法
    public void sound() {
        System.out.println("Dog barks");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal animal = new Animal();
        animal.sound(); // Output: Animal makes a sound
        
        Dog dog = new Dog();
        dog.sound();    // Output: Dog barks
    }
}

在上面的例子中,Animal 类有一个 sound 方法,Dog 类继承了 Animal 类,并重写了 sound 方法。当创建 Dog 类的实例并调用 sound 方法时,将会调用 Dog 类中的 sound 方法,而不是 Animal 类中的。

方法重载和方法重写的区别在于:

  1. 方法重载是在同一个类中定义多个同名方法,这些方法的参数列表必须不同。而方法重写是子类重新定义父类中已经存在的方法。
  2. 方法重载是静态绑定(编译时绑定),在编译阶段确定调用哪个方法。方法重写是动态绑定(运行时绑定),在运行时根据对象的实际类型确定调用哪个方法。
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值