構造器的做用是構造並初始化實例對象。當建立一個對象時,系統爲這個對象的屬性進行初始化。java
class 類名 { 變量聲明; 類的名稱(參數列表) { 方法體 } }
構造器和類要有相同的名字,同時避免在構造器中定義與實例域重名的局部變量。例如this
class student { private String name; private int studentID; //構造器 public student(String n,int m){ name=n; studentID=m; /*定義與實例域重名的局部變量 *這種錯誤很難被發現 String name=n; int studentID=m; */ } }
構造器和類具備相同的名字code
一個類能夠有多個構造器對象
構造器能夠有0、1或多個參數編譯器
構造器沒有返回值和返回類型編譯
構造器不能被顯示調用,老是與new運算符儀器被調用,在建立一個類的新隊形的同時,系統會自動調用該類的構造器爲新對象初始化。class
在java的每一個類中,至少要有一個構造器,沒有定義的話,編譯器將自動插入缺省的構造器。
這種默認初始化被全部數值類型設爲0
,布爾值爲false
,全部引用類型的屬性設置爲null
變量
若是類中提供了至少一個構造器,可是沒有提供無參數的構造器,構造對象沒有提供參數就會被視爲不合法。權限
class student { private String name; private int studentID; //構造器 public student(String name,int studentID){ this.name=name; this.studentID=studentID; } } student=new student(); //產生錯誤
解決方法:能夠爲java類保留無參數的構造器,爲一個類編寫了有參數的構造器,同時建議爲該類編寫一個無參數的構造器。通常把構造器設置爲public訪問權限,設置爲private是爲了阻止其餘類建立該類的實例。數據類型
一個方法的簽名包括方法名、參數類型和個數,但不包括返回值。
類的定義中存在兩個或兩個以上的同名成員方法,爲了使編譯器能區分同名的成員方法,使同名方法的參數個數或參數的數據類型不一樣,從而使編譯器可以挑選具體執行某個方法。
class student { private String name; private String major; private String school; private int studentID; //構造器1 public student(String name,int studentID){ this.name=name; this.studentID=studentID; } //構造器2 public student(String school){ this.school=school; } //構造器3 public student(String major,int studentID){ this.major=name; this.studentID=studentID; } }
class student { private String name; private String major; private String school; private int studentID; //構造器1 public student(String name,int studentID){ this("大山高中") //調用另外一個構造器 this.name=name; this.studentID=studentID; } //構造器2 public student(String school){ this.school=school; }
當咱們想調用超類的的某個方法,可是當前類也有相同的方法,這時可使用super
關鍵字(只是一個指示編譯器調用超類方法的特殊關鍵字)。
class A{ public A(){ System.out.print("A"); } } class B extends A{ public B(){ super();//調用父類構造方法,打印A System.out.print("B"); } }