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

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

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

    冰楓逸范
    Victory won’t come to me unless I go to it. 勝利是不會向我走來的,我必須自己走向勝利。
    在Java中有兩個(gè)非常特殊的變量:this和super,這兩個(gè)變量在使用前都是不需要聲明的。this變量使用在一個(gè)成員函數(shù)的內(nèi)部,指向當(dāng)前對象,當(dāng)前對象指的是調(diào)用當(dāng)前正在執(zhí)行方法的那個(gè)對象。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ù)中這個(gè)對象的方法提示可以直接訪問對象的成員變量的,而且在同一個(gè)范圍中,定義兩個(gè)相同的名字的局部變量是不允許的,如果確實(shí)想使類的成員變量和方法的參數(shù)或方法自己定義的局部變量同名的話就需要想一種方法使成員變量與更它同名的方法參數(shù)或局部變量區(qū)分開來,這就要使用到this變量。下面我想改寫一下上面的代碼,使PersonInformation類的構(gòu)造函數(shù)的每個(gè)參數(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í)行方法的那個(gè)對象實(shí)例,this變量的類型總是為包含前執(zhí)行方法的類,上例中,我們要區(qū)別參數(shù)name和成員變量name,寫成name=name顯然是不允許的,在參數(shù)或局部變量名與類成員變量同名的時(shí)候,由于參數(shù)或局部變量的優(yōu)先級高,這樣在方法體中參數(shù)名或局部變量名將隱藏同名的成員變量,因此,為了值名成員變量,你必須使用this顯示地指明當(dāng)前對象。

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

      this還有一個(gè)用法,就是構(gòu)造函數(shù)的第一個(gè)語句,它的形式是this(參數(shù)表),這個(gè)構(gòu)造函數(shù)就會調(diào)用同一個(gè)類的另一個(gè)相對的構(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("aaron")后,就會自動(dòng)調(diào)用UserInfo(String name,int number)構(gòu)造函數(shù)。

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

      在Java中,有時(shí)還會遇到子類中的成員變量或方法與超類(有時(shí)也稱父類)中的成員變量或方法同名,因?yàn)樽宇愔械某蓡T變量或方法名優(yōu)先級高,所以子類中的同名成員變量和方法就隱藏了超類的成員變量或方法,但是我們?nèi)绻胍褂贸愔械倪@個(gè)成員變量或方法,此使就需要用到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();

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

       Beijing

       China

       如果我們想要使用超類的構(gòu)造函數(shù)則應(yīng)當(dāng)使用super(參數(shù)列表)的形式。 
    posted on 2008-03-24 11:53 冰楓逸范 閱讀(125) 評論(0)  編輯  收藏 所屬分類: J2SE學(xué)習(xí)歷程
    主站蜘蛛池模板: 亚洲黄色片免费看| 午夜理伦剧场免费| 久久亚洲最大成人网4438| 国产精品亚洲mnbav网站 | 中文字幕看片在线a免费| 亚洲人片在线观看天堂无码| 久久亚洲精品中文字幕| 亚洲真人无码永久在线| 日韩亚洲精品福利| 国产网站在线免费观看| 欧美日韩国产免费一区二区三区 | 最新亚洲成av人免费看| 四虎在线播放免费永久视频| 18禁超污无遮挡无码免费网站国产| 亚洲一区二区在线免费观看| 香蕉免费一级视频在线观看| 免费国产在线精品一区| 色欲色欲天天天www亚洲伊| 亚洲熟妇无码一区二区三区 | 美女视频黄免费亚洲| 最近免费字幕中文大全视频| 日韩免费在线观看视频| a级午夜毛片免费一区二区| 久久久受www免费人成| www.av在线免费观看| 春意影院午夜爽爽爽免费| 免费无码AV一区二区| 国产亚洲视频在线播放大全| 国产亚洲精品成人久久网站| www亚洲精品久久久乳| 美女隐私免费视频看| 色费女人18女人毛片免费视频| 日韩欧美亚洲国产精品字幕久久久| 亚洲av日韩精品久久久久久a| 亚洲精品天堂成人片AV在线播放| 亚洲综合一区二区三区四区五区| 亚洲精品美女网站| 亚洲另类无码专区首页| 国产精品亚洲色婷婷99久久精品| 日韩电影免费在线观看网址| www成人免费观看网站|