Overload和Override的区别

发布时间:2023年12月25日

Overload和Override的区别主要体现在以下两个方面:

  1. 含义:Overload表示重载,是指同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同)。Override表示覆盖,也就是重写,是指子类中的方法与父类中的某个方法的名称、参数和返回值类型完全相同,子类覆盖了父类的方法并且对其重写,以求达到不同的作用。
  2. 使用情况:在重载的情况下,方法的不同是通过参数的差异来区分的。在覆盖的情况下,子类中的方法会覆盖父类中的同名方法,并且可以对其重写以实现不同的功能。

方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写?(Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。 ? ? ?

综上所述,Overload和Override的主要区别在于它们的含义和使用情况。在编程中,正确使用这两个概念对于编写高效、可维护的代码至关重要。

以下是一个简单的Java代码示例,用于说明Overload和Override的区别:

class Animal { ?
? ? void makeSound() { ?
? ? ? ? System.out.println("The animal makes a sound"); ?
? ? } ?
} ?
??
class Dog extends Animal { ?
? ? // Overriding the makeSound() method in the Animal class ?
? ? @Override ?
? ? void makeSound() { ?
? ? ? ? System.out.println("The dog barks"); ?
? ? } ?
} ?
??
class Main { ?
? ? public static void main(String[] args) { ?
? ? ? ? Animal myAnimal = new Animal(); ?
? ? ? ? myAnimal.makeSound(); // Output: The animal makes a sound ?
? ? ? ? ??
? ? ? ? Dog myDog = new Dog(); ?
? ? ? ? myDog.makeSound(); // Output: The dog barks ?
? ? } ?
}

在这个例子中,Animal类有一个名为makeSound()的方法,而Dog类继承了Animal类并覆盖了makeSound()方法。在Main类的main()方法中,我们创建了一个Animal对象和一个Dog对象,并分别调用了它们的makeSound()方法。由于Dog类覆盖了Animal类的makeSound()方法,因此当我们通过Dog对象调用makeSound()方法时,输出的是"The dog barks",而不是"The animal makes a sound"。

文章来源:https://blog.csdn.net/zz_ll9023/article/details/135179282
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。