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

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

Java中的方法重载

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

方法重载的例子

如果你观察下面的例子,这里我们创建了一个叫做Sample的类,这个类有两个名字和返回类型相同的方法(add),唯一的区别是它们接受的参数(一个方法接受两个整数变量,另一个接受三个整数变量)。

当你根据你传递的参数调用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

重载和重写的区别

下表强调了方法重载和方法重写之间的主要区别 –

方法重载 方法重写
方法重载被称为编译时多态性。 方法重写被称为运行时多态性。
为了使重载发挥作用,至少要有两个同名的方法。 为了使重写工作顺利进行,我们需要在父类和子类中至少有一个同名的方法。
这些方法必须有不同数量的参数。如果两个方法都有相同数量的参数,那么它们的类型必须是不同的。 两个方法都必须有相同数量和相同类型的参数。

结论

重载和重写是面向对象编程中的概念,用于提高程序的可读性和重用性。方法重载是静态多态性的一种类型。在方法重载中,我们可以定义多个具有相同名称但具有不同参数的方法。

方法重写是一种实现多态性的机制,即超类和子类有相同的方法,包括参数和签名。JVM会根据用于调用方法的对象来调用相应的方法。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程