<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    302班

    java突擊隊
    posts - 151, comments - 74, trackbacks - 0, articles - 14
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    this和super的用法介紹

    Posted on 2007-05-26 15:26 停留的風 閱讀(448) 評論(0)  編輯  收藏 所屬分類: 快速前進的Java
    在Java中有兩個非常特殊的變量:this和super,這兩個變量在使用前都是不需要聲明的。this變量使用在一個成員函數的內部,指向當前對象,當前對象指的是調用當前正在執行方法的那個對象。super變量是直接指向超類的構造函數,用來引用超類中的變量和方法。因此它們都是非常有用的變量,下面我想介紹一下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;

       }

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

      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;

        }

       }

      由上一例中,我們可以看出,該構造函數中必須使用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;

       }

       }

      如果你調用UserInfor newinfotable = new UserInfo("aaron")后,就會自動調用UserInfo(String name,int number)構造函數。

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

      在Java中,有時還會遇到子類中的成員變量或方法與超類(有時也稱父類)中的成員變量或方法同名,因為子類中的成員變量或方法名優先級高,所以子類中的同名成員變量和方法就隱藏了超類的成員變量或方法,但是我們如果想要使用超類中的這個成員變量或方法,此使就需要用到super,請看下面的類。

       class Country

       {

        String name;

        void value()

        {

         name="China";

        }

       }

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

       class City extends Country

        String name;

        void value()

        {

         name="Beijing";

         super.value();

         System.out.println(name);

         System.out.println(super.name);

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

       所以顯示的結果為

       Beijing

       China

       如果我們想要使用超類的構造函數則應當使用super(參數列表)的形式。
    主站蜘蛛池模板: 国产精品亚洲一区二区三区在线| 国产免费一区二区三区VR| 亚洲男人的天堂在线va拉文| 亚洲精品无码成人| 在线免费观看一级毛片| 亚洲乱亚洲乱妇无码| 国产精品免费综合一区视频| 亚洲aⅴ无码专区在线观看春色| 久久精品夜色噜噜亚洲A∨| 野花视频在线官网免费1| 国产午夜影视大全免费观看| 亚洲国产成人精品无码区二本| 国产又长又粗又爽免费视频| 成人免费视频一区二区| 国产午夜亚洲不卡| 日本高清免费观看| 亚洲天堂中文字幕在线观看| 两个人看的www高清免费观看| 无码专区—VA亚洲V天堂| 国产男女爽爽爽免费视频| 成人毛片免费观看| 国产亚洲美女精品久久| 久久伊人亚洲AV无码网站| AAA日本高清在线播放免费观看| 亚洲视频在线观看| 成人毛片免费观看| 中文在线观看国语高清免费| 亚洲第一网站男人都懂| WWW国产亚洲精品久久麻豆| 亚洲精品麻豆av| 最近中文字幕大全免费视频 | 亚洲国产成人片在线观看无码| 无码A级毛片免费视频内谢| 亚洲午夜电影在线观看高清 | 两性刺激生活片免费视频| 亚洲AV无码一区二区三区性色 | 中文字幕版免费电影网站| 亚洲日韩乱码中文无码蜜桃臀 | 中文字幕亚洲一区| 999久久久免费精品国产| 美女18一级毛片免费看|