Corsair

          My javaWorld
          數據加載中……
          繼承帶參數構造器的超類并且調用自身其他構造器的討論
          // 首先有一個帶參數的超類:?
          class ?SuperClass {?
          ???String?str
          = " create?superClass?obj " ;?
          ???SuperClass(
          int ?num) {?
          ???????System.out.println(num
          + str);?
          ???}
          ?
          }
          ?
          /*
          現在有一個子類繼承了這個超類,那么這個子類應該顯式的調用超類的構造函數,以便初始化自己的父類,如下。?
          */

          class ?SubClass? extends ?SuperClass {?
          ???SubClass(
          int ?num) {?
          ??????
          super (num);?
          ???}
          ?
          }
          ?
          /*
          現在子類還要定義一個新的構造函數,并且在前一個構造函數中調用這個新的構造函數,更改如下:?
          */

          class ?SubClass? extends ?SuperClass {?
          ???SubClass(
          int ?num) {?
          ??????
          super (num);?
          ??????
          this ( " other?SubClass(String) " );?
          ???}
          ?
          ???SubClass(String?s)
          {?
          ??????System.out.println(s);?
          ???}
          ?
          ???
          public ? static ? void ?main(String[]?args) {?
          ??????
          new ?SubClass();?
          ???}
          ?
          }
          ?
          /*
          由于我們知道在一個類中的構造函數中要調用自己的其他構造函數,只能通過this();的方式調用一個,并且要放在所在構造函數的第一行,但是使用super();顯式調用也父類帶參構造函數也只能放在第一行,那么這樣就會發生沖突。
          */
          // 參考:?
          public ? class ?SuperClass? {?
          String?str
          = " create?superClass?obj " ;??
          ?SuperClass(
          int ?num) {??
          ???????System.out.println(num
          + str);??
          ???}
          ??
          }
          ?
          public ? class ?SubClass? extends ?SuperClass? {?
          ???SubClass(
          int ?num) {??
          ??????
          super (num);??
          ??????sub(num,
          " other?Subclass(String) " );?
          ???}
          ??
          ???SubClass(
          int ?num,String?s) {??
          ??????
          super (num);?
          ??System.out.println(s);??
          ???}
          ?
          ???
          // -------------?
          ???SubClass?sub( int ?num,String?s) {?
          ???
          return ? new ?SubClass(num,s);?
          ???}
          ?
          ???
          public ? static ? void ?main(String[]?args) {??
          ??????
          new ?SubClass( 1 );?
          ???}
          ??
          }

          posted on 2007-03-31 10:56 銀河海盜 閱讀(452) 評論(0)  編輯  收藏 所屬分類: JAVA

          主站蜘蛛池模板: 喀喇沁旗| 白朗县| 苗栗市| 克拉玛依市| 来安县| 肃北| 西藏| 察雅县| 侯马市| 霸州市| 行唐县| 高清| 凤翔县| 民勤县| 安阳县| 衡山县| 浦江县| 都匀市| 兴安盟| 禹州市| 大埔区| 伊春市| 金堂县| 木兰县| 长顺县| 永清县| 绥芬河市| 广元市| 巍山| 凉山| 仪征市| 莱芜市| 云浮市| 横山县| 万源市| 芒康县| 彭州市| 茌平县| 汉沽区| 巴青县| 宁都县|