推荐答案
在Java中,重载(Overload)和重写(Override)是两种不同的方法处理机制,它们的主要区别如下:
- 重载(Overload):发生在同一个类中,方法名相同但参数列表不同(参数类型、数量或顺序不同)。重载与返回类型无关,可以有不同的返回类型。
- 重写(Override):发生在子类中,子类重新定义父类中已有的方法,方法名、参数列表和返回类型必须完全相同。重写方法不能比被重写方法有更严格的访问权限。
本题详细解读
重载(Overload)
重载是指在同一个类中定义多个方法,它们具有相同的名称但参数列表不同。重载方法可以有不同的返回类型,但仅返回类型不同不足以构成重载。重载的目的是为了提供多种处理不同数据类型或数量的方式。
示例:
// www.javascriptcn.com code example
class Example {
void display(int a) {
System.out.println("Integer: " + a);
}
void display(String a) {
System.out.println("String: " + a);
}
}在这个例子中,display方法被重载了,因为它有两个版本,一个接受int类型参数,另一个接受String类型参数。
重写(Override)
重写是指子类重新定义父类中已有的方法。重写的方法必须具有相同的方法名、参数列表和返回类型。重写方法不能比被重写方法有更严格的访问权限(例如,不能将public方法重写为private)。
示例:
// www.javascriptcn.com code example
class Animal {
void sound() {
System.out.println("Animal makes a sound");
}
}
class Dog extends Animal {
@Override
void sound() {
System.out.println("Dog barks");
}
}在这个例子中,Dog类重写了Animal类中的sound方法。当调用Dog对象的sound方法时,将执行Dog类中的版本,而不是Animal类中的版本。
总结
- 重载:同一个类中,方法名相同,参数列表不同。
- 重写:子类中重新定义父类的方法,方法名、参数列表和返回类型必须相同。