super一些要点
package o6; class Grandparent { public Grandparent() { System.out.println("GrandParent Created."); } public Grandparent(String string) { System.out.println("GrandParent Created.String:"+string); } } class Parent extends Grandparent { public Parent() { super("Hello.Grandparent."); System.out.println("Parent Created"); //super("Hello.Grandparent."); } } class Child extends Parent { public Child() { System.out.println("Child Created"); } } public class TestInherists { public static void main(String args[]) { Child c=new Child(); } }
其结果为:
若把上面绿色注释取消,如下
class Parent extends Grandparent { public Parent() { System.out.println("Parent Created"); super("Hello.Grandparent."); } }
就会报错
原因:通过super调用基类构造方法,必须是子类构造方法中的第一个语句
this 和 super有区别,this用于此类,而super用于父类,若没写super,系统将默认进行super,若写了,则必须放在第一个语句