Java 方法的重载与重写的区别

Java 方法的重载与重写的区别

Java中的方法重载

当一个类有两个或更多同名但参数不同的方法时,在调用时根据传递的参数调用相应的方法(或将相应的方法体与调用行动态绑定)。这个机制被称为方法重载。

方法重载的示例

如果你观察以下的示例,我们创建了一个名为 Sample 的类,这个类有两个同名并且返回类型相同的方法,唯一的区别是它们所接受的参数(一个方法接受两个整数变量,另一个方法接受三个整数变量)。

当你根据传递的参数调用 add() 方法时,会执行相应的方法体。

public class Sample {
   public static void add(int a, int b) {
      System.out.println(a+b);
   }
   public static void add(int a, int b, int c) {
      System.out.println(a+b+c);
   }
   public static void main(String args[]) {
      Sample obj = new Sample();
      obj.add(20, 40);
      obj.add(40, 50, 60);
   }
}

输出

执行后,它将产生以下输出−

60
150

Java中的方法重写

在方法重写中,父类和子类具有相同名称(包括参数)的方法。JVM根据用于调用方法的对象调用相应的方法。在重写中,返回类型也应相同。

方法重写的示例

让我们通过一个示例来了解Java的方法重写如何工作:

class SuperClass {
    public static void sample() {
        System.out.println("Method of the super class");
    }
}
public class SubClass extends SuperClass {
    public static void sample() {
        System.out.println("Method of the sub class");
    }
    public static void main(String args[]) {
        SuperClass obj1 = new SubClass();
        SubClass obj2 = new SubClass();
        obj1.sample();
        obj2.sample();
    }
}

在这里我们有一个超类和一个子类。这两个类都有一个名为Sample()的方法,具有相同的签名。在主类中,我们创建了SuperClass的obj1和SubClass的obj2。JVM根据调用方法的对象调用相应的方法。

输出

执行时,将产生以下输出—

Method of the super class
Method of the sub class

方法重载和方法重写的区别

下表突出了方法重载和方法重写之间的主要区别:

方法重载 方法重写
方法重载被称为编译时多态性。 方法重写被称为 运行时多态性 。
为了实现重载,至少需要两个同名方法。 为了实现重写,父类和子类必须至少有一个同名方法。
这些方法必须具有不同数量的参数。如果这两个方法有相同数量的参数,则它们的类型必须不同。 这两个方法必须具有相同数量、相同类型的参数。

结论

重载(Overloading)和覆盖(Overriding)是面向对象编程中用于提高程序可读性和可重用性的概念。方法重载是一种静态多态(polymorphism)的形式。在方法重载中,我们可以使用相同名称但具有不同参数的多个方法。

方法覆盖是一种实现多态的机制,其中超类和子类具有相同的方法,包括参数和签名。JVM根据调用方法的对象调用相应的方法。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程