thinking in java的一些代碼:http://www.mindviewinc.com/Books/TIJ4/java
構造函數的做用是在建立對象的時候初始化對象函數
package init;
/** * @author sawshaw *對象初始化 */ public class ObjectInit { private int a,b; public ObjectInit(){ //不帶參數的默認構造器 System.out.println("調用了無參構造函數"); } public ObjectInit(int i){ //帶參數的初始化 System.out.println("調用了有參構造函數"); } //對象初始化對屬性賦值 public ObjectInit(int a,int b){ this.a=a; this.b=b; } public static void main(String[] args) { ObjectInit o=new ObjectInit(); o.getValue(); ObjectInit o1=new ObjectInit(6); o1.getValue(); ObjectInit o2=new ObjectInit(6,7); System.out.println(o2.a+","+o2.b); } public void getValue(){ System.out.println("===="); } }
缺省構造器 若是已經定義了一個構造器不管是否有參仍是無參,編譯器不會自動爲你再建立默認的無參構造器,因此若是this
package init;
/** * @author sawshaw *對象初始化 */ public class ObjectInit { private int a,b; /*public ObjectInit(){ //不帶參數的默認構造器 System.out.println("調用了無參構造函數"); }*/ public ObjectInit(int i){ //帶參數的初始化 System.out.println("調用了有參構造函數"); } //對象初始化對屬性賦值 public ObjectInit(int a,int b){ this.a=a; this.b=b; } public static void main(String[] args) { ObjectInit o=new ObjectInit(); o.getValue(); ObjectInit o1=new ObjectInit(6); o1.getValue(); ObjectInit o2=new ObjectInit(6,7); System.out.println(o2.a+","+o2.b); } public void getValue(){ System.out.println("===="); } }
註釋默認的構造器,那麼ObjectInit o=new ObjectInit();
是會報錯的,由於沒有默認的無參構造器spa