方法的重写
当父类的方法功能实现不能满足子类需求时。可以对方法进行重写(override)
子类可以对从父类中继承来的方法进行改造,在程序执行时,子类的方法将覆盖父类的方法,我们将其称为方法的重写或方法的覆盖
(构造方法,静态方法不能重写,成员变量不存在重写)
方法重写的规则
1.子类重写的方法必须和父类被重写的方法名称,参数列表相同
2.子类重写的方法的返回值类型与父类保持一致
3.子类重写的方法使用的访问权限不能小于父类被重写方法的访问权限
(注意:父类私有方法不能重写,跨包的父类默认权限的方法也不能重写)
4.子类方法抛出的异常不能大于父类被重写方法的异常
@Override使用说明
@Override是java中定义的注解标签,用来进行标记
写在方法上面,表示此方法是从父类重写而来,用来检测是不是满足重写方法的要求
这个注解就算不写,只要格式满足要求,也是正确的方法覆盖重写。建议保留,这样编译器可以帮我们检查格式,另外也可以让阅读源代码的程序员清晰的知道这是一个重写的方法
实例
重写之前的代码如下:
父类代码:
public class Person {
public void eat(){
System.out.println("人会吃饭");
}
}
子类代码:
import day3.demo1.Person;
public class Student extends Person {
/*public void eat(){
System.out.println("学生吃饭");
}*/
}
测试代码及运行结果:
public class test_person {
public static void main(String[] args) {
Student student=new Student();
student.eat();
}
}
重写之后的代码如下:
父类代码不变
子类代码:
import day3.demo1.Person;
public class Student extends Person {
public void eat(){
System.out.println("学生吃饭");
}
}
运行结果:
这是因为在子类里重写父类的方法后,在程序执行时,子类的方法将覆盖父类的方法
@Override使用实例
当我们要重写方法时,在子类中点击鼠标右键(如下图),点击Generate
再点击Override Methods
点击你想要重写的方法,最后点击ok即可
效果如下
@Override写在方法上面,表示此方法是从父类重写而来,用来检测是不是满足重写方法的要求