一、方法重写/覆盖
就是子类有一个方法和父类的某个方法的名称、返回类型、参数一样,那么就说子类的这个方法覆盖了父类的方法
二、注意事项
1.子类方法的参数、方法名称要和父类的参数、方法名完全一致
class Animal{
public void cry(){
System.out.println("动物叫");
}
}
class Dog extends Animal{
public void cry(){
System.out.println("小狗汪汪叫");
}
}
2.子类方法的返回类型和父类方法返回类型一样,或者是父类返回类型的子类
class Animal{
public Object m1(){
return null;
}
}
class Dog extends Animal{
public String m1(){
return null;
}
}
3.子类方法不能缩小父类方法的访问权限
public > protected > 默认 > private
class Animal{
void sayOk(){
System.out.println("我的父类方法");
}
}
class Dog extends Animal{
void sayOk(){
System.out.println("我的子类方法");
}
//private void sayOk(){
// System.out.println("我的子类方法");
//}
}
三、重载和重写的区别
名称 | 发生范围 | 方法名 | 参数列表 | 返回类型 | 修饰符 |
重载 | 本类 | 必须一样 | 类型、个数、顺序至少有一个不同 | 无要求 | 无 |
重写 | 父子类 | 必须一样 | 必须相同 | 子类要求重写的返回类型和父类的返回类型一致 或者是其子类 | 子类方法不能缩小父类方法的访问权限 |