錯誤: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