1. 程式人生 > >[18/11/25] 構造方法

[18/11/25] 構造方法

1、構造方法(constructor)

含義:

          構造方法(也叫構造器),用於物件的初始化;是一個建立物件時被自動呼叫的特殊方法,目的是物件的初始化。構造方法的名稱應與類的名稱一致。Java通過new關鍵字來

呼叫構造器,從而返回該類的例項,是一種特殊的方法。當然也可以過載。

格式:                                                //   1. 通過new關鍵字呼叫          2、構造方法的方法名必須和類名一致!

         [修飾符]  類名 (形參){               //   3. 構造方法雖然有返回值,但是不能定義返回值型別(返回值的型別肯定是本類),不能在構造方法裡使用return返回某個值。

             語句;                                 //    4. 如果沒有定義構造方法,則編譯器會自動定義一個無參的建構函式。如果應經定義則編譯器不會自動新增!

}

程式碼示例:

 1 class Point  //構造方法(也叫構造器)
 2 {
 3     double x,y;
 4     public Point(double _x,double _y) //構造方法(一種特殊的方法) 原則:1、方法名與類名相同  
 5     {     // 2、不能定義返回值型別,即public int Point或return X;是錯誤的(雖然這個方法可以給你返回1個值).單獨寫return是對的     
 6         x=_x; //    但是沒有必要,此時return 表示結束方法的執行(作用之一,注:另一個作用是返回一個值)
 7
y=_y; 8 } 9 10 public double getDistance(Point z) //普通方法 11 { //這裡的z是個Point型別(類似於int型 double型的資料型別)的形參,意味著是它具有x,y這2個屬性可以操作 12 return Math.sqrt( (x-z.x)*(x-z.x)+(y-z.y)*(y-z.y) ); 13 } 14 } 15 16 17 18 public class Test_1125_01 //構造方法與普通方法的區別:1、構造方法在例項化物件(new)時只調用1次 2、普通方法是在例項化物件產 19 //生之後,通過物件.方法呼叫多次。 20 { 21 public static void main(String[] args) 22 { 23 Point p=new Point (3.0,4.0); //構造方法 通過這步 完成了例項化物件,並操作了物件p屬性 使物件p屬性為 x=3.0 y=4.0 24 //可以看出:構造方法的主要作用是 【物件的初始化操作】 即若希望物件例項化的同時給其賦值,則可以使用構造方法 25 26 Point origin= new Point(0.0,0.0); 27 28 System.out.println(p.getDistance(origin)); //此時物件origin經過初始化之後 x已經=0.0 y已經=0.0 29 //物件p呼叫getDistance方法, 實參origin送到形參z處,輸出結果 30 31 32 } 33 }

2、構造方法的過載(與普通方法沒有什麼區別)

【程式碼示例】

 1 class User
 2 {
 3     int id; //成員變數id name pwd
 4     String name;
 5     String pwd; //構造方法的過載演示
 6     public User(){ //無引數的構造方法
 7     
 8     }
 9     public User(int id,String name){ //區域性變數 id 和name(與成員變數名字相同,需加 this 關鍵字,this表示建立好的物件)
10         super();      //構造方法第1句總是super(),即使不寫,編譯器自動新增並執行這一句
11         this.id=id;  //此處的this.id 是指成員變數 id(不是最近的區域性變數 id),如果不加this根據就近原則指的是區域性變數 id
12         this.name=name;
13 
14     }
15 
16     public User(int id,String name,String pwd){
17         //super();
18         this.id=id;
19         this.name=name;
20         this.pwd=pwd;
21     }
22 
23 }
24 
25 
26 public class Test_1125_02 
27 {
28     public static void main(String[] args) 
29     {
30         User u1=new User();
31         User u2=new User(101 ,"李白");
32         User u3=new User(102,"杜甫","123456");
33 
34         System.out.println(" 編號:"+u2.id+"\t"+"姓名:"+u2.name);
35         System.out.println(" 編號:"+u3.id+"\t"+"姓名:"+u3.name+"\t"+"密碼:"+u3.pwd);
36 
37     }
38 }