首頁 >Java >java教程 >Java中的兩個特殊變數this和super

Java中的兩個特殊變數this和super

黄舟
黄舟原創
2016-12-17 11:09:361368瀏覽

  在java中有兩個非常非凡的變數:this和super,這兩個變數在使用前都是不需要宣告的。 this變數使用在一個成員函數的內部,指向當前對象,當前對象指的是呼叫目前正在執行方法的那個對象。 super變數是直接指向超類別的建構函數,用來引用超類別中的變數和方法。        因此它們都是非常有用的變量,以下我想介紹this和super的使用方法。

  1、this

  讓我們先看一段程式碼吧:

  class PersonInformation

  {
,.〜『〜〜〜〜〜,a〜〜〜〦〜〜〜,a〜〜) int age;

   void PersonInformation(String p_name,String p_gender,String p_nationality,String p_address,int p_age)

   {

    name=p_name;

   gender=pender;

    address=p_address;

    age=p_age;

   }🀜『會發現,在PersonInformation()函數中這個物件的方法提示可以直接存取物件的成員變數的,而且在同一個範圍中,定義兩個相同的名字的局部變數是不答應的,假如確實想使類別的成員變數和方法的參數或方法自己定義的局部變數同名的話就需要想一種方法使成員變數與更它同名的方法參數或局部變數區分開來,這就要使用到this變數。下面我想改寫上面的程式碼,讓PersonInformation類別的建構子的每個參數都有與物件成員變數相同的名字,而成員變數的初值由參數給定。

  class PersonInformation

   {

    String name,gender,nationality,address; ation(String name,String gender,String nationality,String address,int age)

    {

    this. name=name;

    this.gender=gender;

    this.nationality=nationality;

   〜》》〦〟.
    }

   }

  由上一例中,我們可以看出,該建構函數中必須使用this,this在方法體重用來指向引用當前正在執行方法的那個物件實例,this變數的類型總是為包含前執行方法的類,上例中,我們要區別參數name和成員變數name,寫成name=name顯然是不答應的,在參數或局部變數名稱與類別成員變數同名的時候,由於參數或局部變數的優先權高,這樣在方法體中參數名稱或局部變數名稱將隱藏同名的成員變量,因此,為了值名成員變量,你必須使用this顯示地指明當前物件。

  有時會碰到這種情況,我們全面的訪問當前對象,而不是訪問某一個個別的實例對象,我們也可以使用this,並利用Java中的toString()方法(它能夠返回一個描述這個物件的字串)假如把任何一個物件傳遞到System.out.PRintln方法中,這個方法呼叫這個物件的toString方法,並且列印出結果字串,所以,我們可以用如下方法System.out.println(this ),來列印出任何對方法固有參數的目前狀態。

  this還有一個用法,就是建構函數的第一個語句,它的形式是this(參數表),這個建構子就會呼叫同一個類別的另一個相對的建構子。請看下面的例子:

  class UserInfo 

  {

   public UserInfo(String name)

   {

    this(name,aNewSerialNumber);

   }

   public Userinfo(String name,int number)

   {

    userName=name;

    userNumber=number;

   }
🀜 Info 、〜『〜〜"info = Info〜〜〜〜〦〜〜〜="​​cofS comfcomf. ayne Zheng")後,就會自動呼叫UserInfo(String 

 以上就是Java中的兩個特殊變數this和super的內容,更多相關文章請關注PHP中文網(www.php.cn)!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn