方法重写也叫方法覆盖,需要满足以下条件:
- 子类方法的方法形参列表、方法名称要和父类方法的参数、方法的名称完全一样。
- 子类方法的返回类型和父类方法的返回类型一样,或者是父类返回类型的子类,比如父类返回类型时Object,子类返回类型是String
- 子类方法不能缩小父类方法的访问权限(可以扩大权限)。(public > protect > 默认 > private)
package override_TY;public class Animal {public void cry() {System.out.println("动物叫唤..");}public Object m1() {return null;}public String m2() {return null;}public AAA m3() {return null;}protected void eat() {}}
package override_TY;public class Dog extends Animal{//1. 因为Dog 是 Animal子类//2. Dog的 cry方法和 Animal的 cry定义形式一样(名称、返回类型、参数)//3. 这时我们就说 Dog的cry方法,重写了Animal的cry方法@Overridepublic void cry() {System.out.println("小狗汪汪叫..");}//细节: 子类方法的返回类型和父类方法返回类型一样,// 或者是父类返回类型的子类比如 父类 返回类型是 Object ,// 子类方法返回类型是String@Overridepublic String m1() {return null;}// 这里Object 不是 String的子类,因此编译错误// public Object m2() {// return null;// }@Overridepublic AAA m3() {return null;}// @Override// public BBB m3() {// return null;// }//细节: 子类方法不能缩小父类方法的访问权限(可以扩大权限)// public > protected > 默认>private@Overridepublic void eat() {//或者protected void eat(){}}//错误写法// @Override// void eat() {}// @Override// private void eat() {}}class AAA {}class BBB extends AAA {}
package override_TY;public class Override01 {public static void main(String[] args) {//演示方法重写的情况Dog dog = new Dog();dog.cry();//ctrl+b查找定位方法}}

