- 重写:对父类方法进行改写或改造的现象叫做方法重写或方法覆盖。
- 为什么要重写:为了适应子类新的需要,准确描述子类的行为特征。
- 如何重写?
- 重写后的方法访问权限要么和父类相同要么大于父类public>protected>默认的>private。
- 父类中final修饰的可以被继承但是不能被重写(不允许覆盖final修饰的方法)。
- 改写后的方法可以使用Override注解修饰。示例:
package src; public class Father { public void eat() { System.out.println("正在用筷子吃饭"); } }
package src; public class Son extends Father { @Override public void eat() { System.out.println("正在用刀叉吃饭"); } public static void main(String[] args) { Son son = new Son(); son.eat(); } }
- 注意:
- 父类中static修饰的不允许重写,但可以继承
package src; public class Father { public static void eat() { System.out.println("正在用筷子吃饭"); } } package src; public class Son extends Father { public static void main(String[] args) { Son son = new Son(); son.eat(); } } package src; public class Test { public static void main(String[] args) { Son son = new Son(); son.eat(); }
- 子类中重写后的方法不能加static修饰
- 重写后的方法名必须和父类方法名相同,参数列表除没名字不做限制外,其他必须相同。
- 返回值:
- 如果父类方法返回值为void或基本数据类型,则重写后的方法必须和父类方法保持一致。
- 如果父类方法的返回值为引用类型,则重写后的方法返回值要么与父类一致,要么是父类方法返回值的子类