溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Java中的this和super怎么用

發(fā)布時間:2022-01-10 15:31:55 來源:億速云 閱讀:115 作者:iii 欄目:編程語言

本篇內(nèi)容主要講解“Java中的this和super怎么用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“Java中的this和super怎么用”吧!

  在Java中有兩個非常特殊的變量:this和super,這兩個變量在使用前都是不需要聲明的。this變量使用在一個成員函數(shù)的內(nèi)部,指向當(dāng)前對象,當(dāng)前對象指的是調(diào)用當(dāng)前正在執(zhí)行方法的那個對象。super變量是直接指向超類的構(gòu)造函數(shù),用來引用超類中的變量和方法。因此它們都是非常有用的變量,下面我想介紹一下this和super的使用方法。

  1、this

  讓我們先看一段代碼吧:

  class PersonInformation

  {

   String name,gender,nationality,address;

   int age;

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

   {

    name=p_name;

    gender=p_gender;

    nationality=p_nationality;

    address=p_address;

    age=p_age;

   }

  }
 
  你會發(fā)現(xiàn),在PersonInformation()函數(shù)中這個對象的方法提示可以直接訪問對象的成員變量的,而且在同一個范圍中,定義兩個相同的名字的局部變量是不允許的,如果確實想使類的成員變量和方法的參數(shù)或方法自己定義的局部變量同名的話就需要想一種方法使成員變量與更它同名的方法參數(shù)或局部變量區(qū)分開來,這就要使用到this變量。下面我想改寫一下上面的代碼,使PersonInformation類的構(gòu)造函數(shù)的每個參數(shù)都有與對象成員變量相同的名字,而成員變量的初值由參數(shù)給出。

  class PersonInformation

   {

    String name,gender,nationality,address;

    int age;

    void PersonInformation(String name,String gender,String nationality,String address,int age)

    {

    this.name=name;

    this.gender=gender;

    this.nationality=nationality;

    this.address=address;

    this.age=age;

    }

   }

  由上一例中,我們可以看出,該構(gòu)造函數(shù)中必須使用this,this在方法體重用來指向引用當(dāng)前正在執(zhí)行方法的那個對象實例,this變量的類型總是為包含前執(zhí)行方法的類,上例中,我們要區(qū)別參數(shù)name和成員變量name,寫成name=name顯然是不允許的,在參數(shù)或局部變量名與類成員變量同名的時候,由于參數(shù)或局部變量的優(yōu)先級高,這樣在方法體中參數(shù)名或局部變量名將隱藏同名的成員變量,因此,為了值名成員變量,你必須使用this顯示地指明當(dāng)前對象。

  有時候會遇到這種情況,我們?nèi)娴脑L問當(dāng)前對象,而不是訪問某一個個別的實例對象,我們也可以使用this,并利用Java中的toString()方法(它能夠返回一個描述這個對象的字符串)如果把任何一個對象傳遞到System.out.println方法中,這個方法調(diào)用這個對象的toString方法,并打印出結(jié)果字符串,所以,我們可以用如下方法System.out.println(this),來打印出任何對方法固有參數(shù)的當(dāng)前狀態(tài)。

  this還有一個用法,就是構(gòu)造函數(shù)的第一個語句,它的形式是this(參數(shù)表),這個構(gòu)造函數(shù)就會調(diào)用同一個類的另一個相對的構(gòu)造函數(shù)。請看下面的例子:

  class UserInfo

  {

   public UserInfo(String name)

   {

    this(name,aNewSerialNumber);

   }

   public Userinfo(String name,int number)

   {

    userName=name;

    userNumber=number;

   }

   }

  如果你調(diào)用UserInfor newinfotable = new UserInfo("Wayne Zheng")后,就會自動調(diào)用UserInfo(String name,int number)構(gòu)造函數(shù)。

   可見,熟練掌握this在Java程序設(shè)計過程中是非常重要的
2、super

  在Java中,有時還會遇到子類中的成員變量或方法與超類(有時也稱父類)中的成員變量或方法同名,因為子類中的成員變量或方法名優(yōu)先級高,所以子類中的同名成員變量和方法就隱藏了超類的成員變量或方法,但是我們?nèi)绻胍褂贸愔械倪@個成員變量或方法,此使就需要用到super,請看下面的類。

   class Country

   {

    String name;

    void value()

    {

     name="China";

    }

   }

  下面的子類中,自類的成員變量和方法隱藏了超類的成員變量name和方法value(),

   class City extends Country

    String name;

    void value()

    {

     name="Hefei";

     super.value();

     System.out.println(name);

     System.out.println(super.name);

    }
 
   為了在子類中引用超類中的成員變量name和方法value(),在代碼中我們使用了super,super.name和super.value();

   所以顯示的結(jié)果為

   Hefei

   China

   如果我們想要使用超類的構(gòu)造函數(shù)則應(yīng)當(dāng)使用super(參數(shù)列表)的形式。

到此,相信大家對“Java中的this和super怎么用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI