方法重载发生在同一类中,方法名相同但参数列表不同,返回类型可不同,用于编译时多态;方法重写发生在子类继承父类时,方法名、参数列表、返回类型均相同,用于运行时多态,调用由对象实际类型决定。

在Java中,方法重载和方法重写是两个与方法相关的不同概念,它们都体现了多态性,但应用场景和规则完全不同。
方法重载(Overloading)
方法重载发生在同一个类中,指的是多个方法具有相同的名称,但参数列表不同。返回类型可以相同也可以不同,只要参数的个数、类型或顺序不一样即可。
方法重载的目的是让同一个方法名可以根据不同的参数执行不同的逻辑,提高代码的可读性和复用性。
例如:
立即学习“Java免费学习笔记(深入)”;
public class Calculator {public int add(int a, int b) {
return a + b;
}
public double add(double a, double b) {
return a + b;
}
public int add(int a, int b, int c) {
return a + b + c;
}
}
这三个add方法名称相同,但参数不同,构成重载。
方法重写(Overriding)
方法重写发生在子类继承父类时,子类提供了一个与父类中某个方法具有相同名称、相同参数列表和相同返回类型的方法,从而覆盖父类的方法实现。
AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。它不是新的编程语言,而是一种使用现有标准的新方法,最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容,不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。《php中级教程之ajax技术》带你快速
方法重写用于实现运行时多态,即调用哪个方法由对象的实际类型决定。
重写需满足以下条件:
- 方法名和参数列表必须完全一致
- 返回类型要相同或是其子类(协变返回)
- 访问权限不能比父类更严格(如父类是protected,子类不能是private)
- 不能重写父类的private、static或final方法
示例:
class Animal {public void makeSound() {
System.out.println("Animal makes sound");
}
}
class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("Dog barks");
}
}
当使用Animal a = new Dog(); a.makeSound();时,会输出"Dog barks",这就是重写的效果。









