在 Java 中,什么时候用重载,什么时候用重写?

目录

一、什么是Java重载

二、什么是Java重写

三、什么时候用重载,什么时候用重写?


在 Java 中,什么时候用重载,什么时候用重写?_第1张图片

 

一、什么是Java重载

在Java中,重载(Overloading)是指在同一个类中定义相同的方法名但不同的参数列表的一种特性。当程序调用这个方法时,Java编译器会根据传递给该方法的参数数量、类型和顺序来决定要调用哪个具体的方法。因此,重载允许我们使用相同的方法名称,但处理不同的输入数据。

Java中的重载可以包括以下几种情况:

  • 参数个数不同。
  • 参数类型不同。
  • 参数顺序不同。

例如,我们可以定义一个名为printSum()的方法,它接受两个整数作为参数,并打印它们的和。然后,我们可以再定义一个名为printSum()的方法,它接受三个整数作为参数,并打印它们的和。这就是重载的一种形式。以下是示例代码:

public class OverloadingExample {
    public static void printSum(int a, int b) {
        System.out.println("Sum of two integers: " + (a + b));
    }
    
    public static void printSum(int a, int b, int c) {
        System.out.println("Sum of three integers: " + (a + b + c));
    }
    
    public static void main(String[] args) {
        printSum(2, 3); // 调用第一个printSum方法
        printSum(2, 3, 4); // 调用第二个printSum方法
    }
}

在上面的示例中,我们定义了两个名为printSum的方法,一个接受两个整数,另一个接受三个整数。在程序中,我们分别调用这两个方法来打印它们的和。

需要注意的是,重载方法必须在同一个类中,并且它们具有相同的名称但不同的参数列表。返回类型和访问修饰符对于重载方法没有限制。

在 Java 中,什么时候用重载,什么时候用重写?_第2张图片

 

二、什么是Java重写

在Java中,重写(Override)是指子类定义了一个与父类具有相同名称、参数列表和返回类型的方法。通过重写,子类可以覆盖父类的方法实现,从而实现对父类方法的特定修改或扩展。

重写的规则如下:

  • 方法名称、参数列表和返回类型必须与父类中被重写的方法保持一致。
  • 访问修饰符不能比父类中被重写的方法的访问修饰符限制更严格。例如,如果父类中的方法是public,则重写它的方法不能是protected或private。
  • 子类方法不能抛出比父类中被重写的方法更多或更不同的异常。
  • 如果父类中被重写的方法是final或static,则不能被重写。

以下是一个示例,演示如何在子类中重写父类的方法:

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

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

public class OverrideExample {
    public static void main(String[] args) {
        Animal animal = new Animal();
        Cat cat = new Cat();

        animal.makeSound(); // Output: Animal is making a sound
        cat.makeSound(); // Output: Meow
    }
}

在上述代码中,我们创建了一个Animal类和一个Cat类,并在Cat类中重写了makeSound()方法。然后我们分别创建了一个Animal对象和一个Cat对象,并调用它们的makeSound()方法。由于Cat类重写了makeSound()方法,因此当我们调用cat.makeSound()时,会输出"Meow"。而当我们调用animal.makeSound()时,会调用Animal类中的makeSound()方法,因此会输出"Animal is making a sound"。

在 Java 中,什么时候用重载,什么时候用重写?_第3张图片

 

三、什么时候用重载,什么时候用重写?

Java中的重载(Overload)和重写(Override)都是面向对象编程的特性,但它们用于不同的情况。

重载是指在一个类中定义多个方法名相同但参数列表不同的方法。编译器会根据传递给方法的参数类型、数量和顺序来确定调用哪个方法。重载可以提供更灵活和多样化的方法,使得我们可以使用相同的方法名执行不同的操作。例如,Java中的System.out.print()方法就有多个不同版本的重载,可以接受不同类型的数据作为参数。

重写是指在子类中定义一个与父类中同名、参数列表也相同的方法,但实现方式不同。通过重写,我们可以为继承自父类的方法提供新的实现,从而满足子类的特殊需求。重写实现了多态性的概念,即允许我们在运行时选择方法的实现。例如,Java中的Object类中的equals()和hashCode()方法经常被子类重写以提供自定义的比较方法。

总的来说,在Java中,当我们需要为同一个类添加多个不同的方法时,可以使用重载;当我们需要在子类中修改或扩展从父类继承的方法时,可以使用重写。

在 Java 中,什么时候用重载,什么时候用重写?_第4张图片

 

你可能感兴趣的:(JAVA,java,jvm,开发语言,mybatis,spring)