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 銀河海盜 閱讀(456) 評論(0)  編輯  收藏 所屬分類: JAVA

          主站蜘蛛池模板: 舒兰市| 出国| 虞城县| 长顺县| 靖安县| 台安县| 大冶市| 韩城市| 疏附县| 宣化县| 通州市| 凤阳县| 儋州市| 安陆市| 宁乡县| 定安县| 青阳县| 泽普县| 崇左市| 太仓市| 安塞县| 开封县| 印江| 三穗县| 台前县| 黄陵县| 咸丰县| 海兴县| 徐闻县| 阿鲁科尔沁旗| 平昌县| 乌兰浩特市| 阿拉善盟| 堆龙德庆县| 铜陵市| 扶沟县| 谢通门县| 沙田区| 张家港市| 屏南县| 辉南县|