目录
一、方法重载
二、方法重写(方法覆盖)
三、方法重载和方法重写的比较
一、方法重载
Java允许一个类中,多个同名方法存在,但要求形参列表不一致多个同名方法存在,但要求形参列表不一致(方法名必须相同,形参列表必须不同(形参个数、或类型、或顺序不同),返回类型无要求)
代码示例:m方法重载
class Methods{
public int m(int n){
return n*n;
}
public int m(int n,int a){
return n*a;
}
public String m(String c){
return c;
}
}
二、方法重写(方法覆盖)
方法重写(覆盖)就是子类有一个方法,和父类的某个方法的名称、返回类型、参数一样,那么我们就说这个子类的方法覆盖了父类的方法。
方法重写需要满足以下条件:
(1)子类的方法的参数、方法名称要和父类的完全一样
(2)子类方法的返回类型与父类的一样,或者是父类返回类型的子类
(3)子类方法不能缩小父类方法的访问权限
代码示例:
父类和子类中都有say方法就是方法的重写(set和get方法是为了对私有属性进行操作)
//父类person
public class Person {
private int age;
public Person( int age) {
this.age = age;
}
public String say(){
System.out.println("Person自我介绍:");
return " age="+age;
}
//子类student
public class Student extends Person{
private String id;
public Student(int age, String id) {
super(age);
this.id = id;
}
public String say(){
System.out.println("Student自我介绍:");
return super.say()+"id="+id;
}
}
三、方法重载和方法重写的比较
| 名称 | 发生范围 | 方法名 | 返回类型 | 形参列表 | 修饰符 |
| 重载 | 本类中 | 必须相同 | 无要求 | 类型、顺序或个数至少一个不同 | 无要求 |
| 重写 | 父类和子类 | 必须相同 | 子类方法的返回类型与父类的一样,或者是父类返回类型的子类 | 相同 | 子类方法不能缩小父类方法的访问范围 |



