方法重载与方法重写的最大区别:
方法重载:是在同一个类里面方法名相同,可以参数不同,方法体不同。
方法重写:在继承关系中,父类必须有方法并且子类用不上或需要调整,方法重写必须在子类里面,方法名,参数相同,但方法体不同。
方法重写
-
修饰词不能是static
-
只能在继承关系中并且是在子类里才能重写
-
父类与子类方法名,参数类型,数量必须一样
-
重写的方法只有方法体与父类不同
-
重写方法的修饰符的范围只能扩大,不能缩小。(大)public>Protected>Default>private(小)
-
快捷键:alt + insert 后选override
为什么要重写
-
父类的功能对于子类来说不需要,或者过多,过少,所以需要重写
代码说明
未重写
//父类 public class B{ public static void test(){ System.out.println("B=>test()"); } }
//子类 public class A extents B{ //未重写 public static void test(){ System.out.println("A=>test()"); } }
//未重写时使用 public class Application { public static void main(string[] args){ //方法的调用只和左边,定义的数据类型有关 A a = new A(); a.test(); //A=>test() //父类的引用指向了子类 B b = new A(); b.test();//B=>test() } }
重写
//父类 public class B{ public void test(){ System.out.println("B=>test()"); } }
//子类重写 public class A extents B{ //重写后 @Override//有功能的注解 public void test(){ System.out.println("A=>test()"); } }
//重写时使用 public class Application { public static void main(string[] args){ //方法的调用只和左边,定义的数据类型有关 A a = new A(); a.test(); //A=>test() //父类的引用指向了子类 B b = new A(); b.test();//A=>test() } }