Web | Coding | Blog | SOHO

[Java]類別 class – 建構元間的呼叫

[JAVA]類別 CLASS – 初次見面 (補充篇) 提到呼叫與this的使用;
在建構元也可以運用此技術達到建構元間的呼叫。


以下範例為建構元利用this的技術來相互呼叫:

class CCircle
{
   private String color;
   private double pi=3.14;
   private double radius;

   public CCircle()           //這是一個沒有引數建構元
   {
      this("Green",1.0);      //這行將會呼叫有兩個引數的建構元
      System.out.println("CCircle() 呼叫");
   }
   public CCircle(String str, double r)    //這是一個有兩個引數的建構元
   {
      System.out.println("CCircle(String,double) 呼叫");
      color=str;
      radius=r;
   }
   public void show()
   {
      System.out.println("color="+color+", Radius="+radius);
      System.out.println("area="+pi*radius*radius);
   }
}
public class class_constructor_3
{
   public static void main(String args[])
   {
      CCircle cir1=new CCircle();
      cir1.show();
   }
}

以下針對這程式解說一下:

主程式部分,直接呼叫沒有引數的建構元

CCircle cir1=new CCircle();

讓我們看到沒有引數的建構元

public CCircle()           //這是一個沒有引數建構元
   {
      this("Green",1.0);      //這行將會呼叫有兩個引數的建構元
      System.out.println("CCircle() 呼叫");
   }

讓我們再看到有兩個引數的建構元

public CCircle(String str, double r)    //這是一個有兩個引數的建構元
   {
      System.out.println("CCircle(String,double) 呼叫");
      color=str;
      radius=r;
   }

剛剛在沒有引數的建構元當中:

this("Green",1.0);

把color 設為Green,radius設為1.0;
因為要呼叫下方 擁有兩個引數的建構元,
因此以this() 來呼叫。



注意!

this ( )  要寫在建構元的敘述第一行;以下情況是不行的:

public CCircle()           //這是一個沒有引數建構元
   {
      System.out.println("CCircle() 呼叫");
      this("Green",1.0);     //這行寫法是錯誤的
   }

正確寫法為:

public CCircle()           //這是一個沒有引數建構元
   {
      this("Green",1.0);      //這行將會呼叫有兩個引數的建構元
      System.out.println("CCircle() 呼叫");
   }


參考書籍:Java 7 教學手冊
Java 學習日誌 (點此閱讀所有 Java日誌)


如果您喜歡本站的文章,也歡迎將文章分享轉貼並註明出處;
另外還未按讚粉絲專頁的朋友,也可以動動手點擊追蹤最新的文章唷:

Comments

comments

如果您喜歡本站的文章,也歡迎將文章分享轉貼並註明出處;另外還未按讚粉絲專頁的朋友,也可以動動手點擊追蹤最新的文章唷:


© 2017 4xCode™ | Design:SC 站長