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

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

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

    Dict.CN 在線詞典, 英語學習, 在線翻譯

    都市淘沙者

    荔枝FM Everyone can be host

    統計

    留言簿(23)

    積分與排名

    優秀學習網站

    友情連接

    閱讀排行榜

    評論排行榜

    理解構造器

    ??要學習Java,你必須理解構造器。因為構造器可以提供許多特殊的方法,這個對于初學者經常混淆。但是,構造器和方法又有很多重要的區別。

    ?????我們說構造器是一種方法,就象講澳大利亞的鴨嘴獸是一種哺育動物。(按:老外喜歡打比喻,我也就照著翻譯)。要理解鴨嘴獸,那么先必須理解它和其他哺育動物的區別。同樣地,要理解構造器,那么就要了解構造器和方法的區別。所有學習java的人,尤其是對那些要認證考試的,理解構造器是非常重要的。下面將簡單介紹一下 ,最后用一個表作了些簡單的總結。


    一、功能和作用的不同
    構造器是為了創建一個類的實例。這個過程也可以在創建一個對象的時候用到:Platypus p1 = new Platypus();

    相反,方法的作用是為了執行java代碼。

    二、修飾符,返回值和命名的不同
    ????構造器和方法在下面三個方面的區別:修飾符,返回值,命名。和方法一樣,構造器可以有任何訪問的修飾: public, protected, private或者沒有修飾(通常被package 和 friendly調用). 不同于方法的是,構造器不能有以下非訪問性質的修飾: abstract, final, native, static, 或者 synchronized。

    返回類型也是非常重要的。方法能返回任何類型的值或者無返回值(void),構造器沒有返回值,也不需要void。

    最后,談談兩者的命名。構造器使用和類相同的名字,而方法則不同。按照習慣,方法通常用小寫字母開始,而構造器通常用大寫字母開始。構造器通常是一個名詞,因為它和類名相同;而方法通常更接近動詞,因為它說明一個操作。

    三、"this"的用法
    ?????構造器和方法使用關鍵字this有很大的區別。方法引用this指向正在執行方法的類的實例。靜態方法不能使用this關鍵字,因為靜態方法不屬于類的實例,所以this也就沒有什么東西去指向。構造器的this指向同一個類中,不同參數列表的另外一個構造器,我們看看下面的代碼:

    public class Platypus {

    String name;

    Platypus(String input) {
    ??name = input;
    }

    Platypus() {
    ???this("John/Mary Doe");
    }

    ??public static void main(String args[]) {
    ????Platypus p1 = new Platypus("digger");
    ???Platypus p2 = new Platypus();
    ??}
    }

    ????在上面的代碼中,有2個不同參數列表的構造器。第一個構造器,給類的成員name賦值,第二個構造器,調用第一個構造器,給成員變量name一個初始值 "John/Mary Doe".

    在構造器中,如果要使用關鍵字this,那么,必須放在第一行,如果不這樣,將導致一個編譯錯誤。

    四、"super"的用法
    ??????構造器和方法,都用關鍵字super指向超類,但是用的方法不一樣。方法用這個關鍵字去執行被重載的超類中的方法。看下面的例子:

    class Mammal {
    ???void getBirthInfo() {
    ??????System.out.println("born alive.");
    ???}
    }

    class Platypus extends Mammal {
    ???void getBirthInfo() {
    ?????System.out.println("hatch from eggs");
    ?????System.out.print("a mammal normally is ");
    ?????super.getBirthInfo();
    ???}
    }

    在上面的例子中,使用super.getBirthInfo()去調用超類Mammal中被重載的方法。

    構造器使用super去調用超類中的構造器。而且這行代碼必須放在第一行,否則編譯將出錯。看下面的例子:

    public class SuperClassDemo {
    ??SuperClassDemo() {}
    }

    class Child extends SuperClassDemo {
    ??Child() {
    ??????super();
    ??}
    }

    在上面這個沒有什么實際意義的例子中,構造器 Child()包含了 super,它的作用就是將超類中的構造器SuperClassDemo實例化,并加到 Child類中。

    五、編譯器自動加入代碼
    ?????編譯器自動加入代碼到構造器,對于這個,java程序員新手可能比較混淆。當我們寫一個沒有構造器的類,編譯的時候,編譯器會自動加上一個不帶參數的構造器,例如:public class Example {}
    編譯后將如下代碼:

    public class Example {
    ????Example() {}
    }

    在構造器的第一行,沒有使用super,那么編譯器也會自動加上,例如:

    public class TestConstructors {
    ??TestConstructors() {}
    }

    編譯器會加上代碼,如下:

    public class TestConstructors {
    ??TestConstructors() {
    ????super();
    ??}
    }

    仔細想一下,就知道下面的代碼

    public class Example {}

    經過會被編譯器加代碼形如:

    public class Example {
    ???Example() {
    ?????super();
    ???}
    }

    六、繼承
    ????構造器是不能被繼承的。子類可以繼承超類的任何方法。看看下面的代碼:

    public class Example {
    ??public void sayHi {
    ????system.out.println("Hi");
    ??}

    ??Example() {}
    }

    public class SubClass extends Example {
    }

    類 SubClass 自動繼承了父類中的sayHi方法,但是,父類中的構造器 Example()卻不能被繼承。

    總結

    主題 構造器 方法
    功能 建立一個類的實例 java功能語句
    修飾 不能用bstract, final, native, static, or synchronized
    返回類型 沒有返回值,沒有void 有返回值,或者void
    命名 和類名相同;通常為名詞,大寫開頭 通常代表一個動詞的意思,小寫開頭
    this
    指向同一個類中另外一個構造器,在第一行
    指向當前類的一個實例,不能用于靜態方法
    super 調用父類的構造器,在第一行
    調用父類中一個重載的方法
    繼承 構造器不能被繼承 方法可以被繼承

    編譯器自動加入一個缺省的構造器
    自動加入(如果沒有) 不支持
    編譯器自動加入一個缺省的調用到超類的構造器 自動加入(指super(),如果沒有) 不支持


    posted on 2006-04-26 16:29 都市淘沙者 閱讀(208) 評論(0)  編輯  收藏 所屬分類: Java Basic/Lucene/開源資料

    主站蜘蛛池模板: 一个人免费观看www视频| 中国亚洲呦女专区| h视频在线免费观看| 国产99视频精品免费视频7| 日韩亚洲产在线观看| 亚洲免费综合色在线视频| 内射少妇36P亚洲区| 99re6在线精品视频免费播放 | 日韩伦理片电影在线免费观看| 亚洲人成人77777网站不卡| 67194国产精品免费观看| 亚洲黄网在线观看| 久久久久久久91精品免费观看| 亚洲精品日韩中文字幕久久久| 四虎1515hh永久久免费| 亚洲国产91在线| 免费精品一区二区三区在线观看| 亚洲成a人片在线不卡一二三区 | 四虎国产精品免费久久影院| 国产亚洲综合视频| 亚洲区日韩区无码区| rh男男车车的车车免费网站| 久久亚洲国产午夜精品理论片 | 国产免费毛不卡片| 亚洲欧美aⅴ在线资源| 四虎影院永久免费观看| 中国一级特黄的片子免费| 久久精品亚洲视频| 两个人的视频高清在线观看免费| 亚洲精品精华液一区二区| 亚洲av成人一区二区三区在线观看| 和老外3p爽粗大免费视频| 亚洲天堂一区二区| 在线观看人成视频免费| 国产成人无码精品久久久久免费| 亚洲高清视频在线观看| 大学生一级特黄的免费大片视频 | 亚洲第一成人影院| 日本免费一区二区三区四区五六区| 亚洲最大成人网色香蕉| 国内精品99亚洲免费高清|