方法重写,也有人叫方法覆盖,其实覆盖这个词更形象些。
父类有通用方法,但在某些业务场景下这个通用方法可能不太适用所有子类。
那么子类可以定义自己的方法,调用时执行自己的方法,而不使用父类的。这就是方法重写。
即:子类重写了父类的方法(或者叫子类方法覆盖了父类的方法)。
重写语法
Say obj = new Say();
obj.Met(); // 这里输出的是子类方法
class Cate{
// 父类方法
public void Met(){
System.out.println("今晚去吃饭")
}
}
class Say extends Cate{
public void Met(){ // 对父类方法进行了重写
System.out.println("今晚去吃浙江菜,但不要点东坡肉")
}
}
方法重写就是子类有一个方法,和父类的某个方法名称,返回类型,参数一样(哪怕是形参列表,也必须一样),那么我们就说子类的这个方法覆盖了父类的方法。
继承会根据查找关系就近原则,如果子类有,则执行子类的方法,不执行父类的方法(因为父类的方法被子类方法重写)。而子类方法一旦被注释掉,则会执行父类的公共方法。
子类不能缩小父类的访问权限