錯誤:Implicit super constructor xx() is undefined for default constructor. Must define an explicit con

錯誤:Implicit super constructor xx() is undefined for default constructor. Must define an explicit constructor函數

由於你的父類已經定義了一個有參的構造器,此時編譯器不會爲你調用默認的構造器,當子類繼承時,必須在本身的構造函數顯示調用父類的構造器,本身才能確保子類在初始化前父類會被實例化,若是你父類中有無參的構造器,字類就不會強制要求調用,即你寫的那個就能夠經過,編譯器會默認幫你調用父類的構造器。 
按原來的思路,必須該成下面的: 
class Person { 
protected String name; 
protected int age; 
////你已經定義了自動的構造函數,此時編譯器不會爲你建立默認的構造函數 
public Person(String name,int age) { 
this.name=name; 
this.age=age; 
} 
public void print() { 
System.out.println("Name:"+name+"/nAge:"+age); 
} 
} 
//因爲父類的構造函數是有摻的,因此編譯不會爲你自動調用默認的構造函數,此時,子類在自 
//己的構造函數中必須顯示的調用父類的構造函數 
class Student extends Person { 
public Student(){ //子類構造函數 
//super(); //不行,由於你的父類沒有無參的構造函數 
super("a",1); //顯示調用父類的構造函數,並且必須是第一行調用 
} 
} 
class Test { 
public static void main(String args[]){ 
} 
}this

相關文章
相關標籤/搜索