day17- 重写
方法的重写 和属性无关
在父类和子类中,可以重写方法
分为静态重写和非静态重写
静态重写
方法的调用和左边定义的数据类型有关
public static 为静态重写
1 //父类B 2 public class B { 3 public static void test(){ 4 System.out.println("B>>test"); 5 6 } 7 } 8 //子类A 9 public class A extends B{ 10 //Override 重写 11 //@Override// 注解:有功能的注释 12 public static void test() { 13 System.out.println("A>>test"); 14 } 15 } 16 //main方法 17 A a = new A(); 18 a.test(); //A 19 20 //父类的引用指向了子类 21 B b = new A();//非静态方法:子类重写了父类的方法 22 b.test(); //B
此时方法的调用和左边定义的数据类型有关
非静态重写
才成为重写,子类的方法重写了父类的方法
public +。。。
1 public class B { 2 public void test(){ 3 System.out.println("B>>test"); 4 5 } 6 } 7 8 public class A extends B{ 9 //Override 重写 10 //@Override// 注解:有功能的注释 11 public void test() { 12 System.out.println("A>>test"); 13 } 14 } 15 16 A a = new A(); 17 a.test();//A 18 19 //父类的引用指向了子类 20 B b = new A();//非静态方法:子类重写了父类的方法 21 b.test();//A
此时B调用的是A的方法,和左边的定义无关。
总结
1 重写:需要有继承关系,子类重写父类的方法 2 1. 方法名必须相同 3 2. 参数列表也必须相同 4 3. 修饰符:范围可以扩大:public > protected > default > private 5 4. 抛出的异常:范围可以被缩小,但不能被扩大。 6 7 重写:子类的方法必须要一致,但方法体不相同 8 9 为什么需要重写: 10 1. 父类的功能子类不一定需要,或者不一定满足 11 2. 可以用快捷键重写。

浙公网安备 33010602011771号