1,方法的覆写
class A { public void print() { System.out.println("Hello World .") ; } } class B extends A { public void print() { // 方法名称、参数类型及个数、返回值全相同 System.out.println("世界,你好!") ; } } public class Test { public static void main(String args[]) { B b = new B() ; b.print() ; //方法从父类继承而来 } } |
当一个类之中的方法被覆写之后,如果实例化的是这个子类对象,则调用的方法就是被覆写过的方法。
但是在进行方法覆写的时候有一个点需要注意:被子类所覆写的方法不能拥有比父类更严格的访问控制权限,对于访问控制权限现在已经接触过三种:private < default(不写)<public;
如果此时父类之中的方法是default权限,那么子类覆写的时候只能是default或public权限,而如果父类的方法是public,那么子类之中方法的访问权限只能是public。
当一个子类覆写了一个父类方法的时候,那么在这种情况下,子类要想调用父类的被覆写过的方法,则在方法前要加上“super”。
2,属性的覆盖
class A { public String msg = "Hello World ." ; } class B extends A { public int msg = 100 ; //属性同名 public void print() { System.out.println("msg = " + this.msg); System.out.println("msg = " + super.msg); } } public class Test { public static void main(String args[]) { B b = new B() ; b.print() ; //方法从父类继承而来 } |