2015年4月21日 星期二

[Java] this用法

建立一個Classmate.java的函數,
程式如下:
class Classmate{
  String name;
  int height;
  int weight;
  
  Classmate(){
   System.out.println("0參數的自構函數");
  }
  
  Classmate(String name, int height, int weight){
   this();
   this.name = name;
   this.height = height;
   this.weight = weight;
   System.out.println("三個參數的自構函數");
  }
  
  void discuss(){
   System.out.println("In " + this.name + " Opinion");
   
  }
 
}

接著在Test.java當中,
編寫以下程式:
class Test{
  public static void main(String args []){
   Classmate p1 = new Classmate();
   p1.name = "Helen";
   p1.discuss();

   Classmate p2 = new Classmate("laser", 180,80);
   
  }
 
}

this的使用方法
1. 
在Test.java當中,建立的p1,執行 p1.discuss() 的method時,
在Classmate.java的method宣告中,
使用了this.name,就是為了告知程式,我們現在使用的是p1的資訊,
可以把this想成,為了明確的知道是使用了"誰"的name。

2.
在Test.java當中,看到p2,在建立Classmate時,給予了三個參數,
所以程式在執行時,會自動在Classmate.java當中去尋找三個參數的自構函數,
接著看到Classmate.java當中,可以看到Classmate(String name, int height, int weight)
把name、height、weight給予了this.name、this.height、this.weight
這表示了使用 this 可以讓我們的程式看起來更簡潔
避免了自構函數的參數與成員的變數相同的情況。

3.
在Classmate.java的Classmate(String name, int height, int weight)當中
第一行為this( ),表示呼叫了Classmate.java中沒有參數的自構函數。
*this( ) 用法只可以在函數中使用一次,而且必須在第一行。

2 則留言:

  1. Classmate p1 = new Classmate;

    少一個括號?

    回覆刪除
    回覆
    1. 您好~
      謝謝您的提醒, 已經修改過來, 謝謝您~

      刪除