java面试题(19):重载和重写的区别?
在面向对象编程中,方法的重载(Overloading)和重写(Overriding)是两个非常重要的概念,它们在很多方面都非常相似,但也有一些关键的区别。
方法的重载是在同一个类中定义多个同名的方法,但这些方法的参数列表(参数的类型、数量、顺序)必须不同。此外,返回类型不能用来区分重载的方法。以下是重载的例子:
public class Demo { void show(int a) { // method body } void show(String s) { // method body }
}
方法的重写是子类提供了与父类相同方法名、参数列表的方法。此时,子类方法将会“覆盖”父类的同名方法。重写的两个基本条件是:两个方法具有相同的方法名称、参数列表和返回类型;子类方法必须与父类方法具有相同的方法签名。以下是重写的例子:
public class Parent { void show() { // method body }
} public class Child extends Parent { @Override void show() { // method body }
}
重要区别:重载是发生在同一个类中,而重写发生在父类和子类之间。重载可以增加方法的可读性,而重写可以增加代码的复用性。此外,重载可以改变返回类型,而重写不能改变返回类型。