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

          主站蜘蛛池模板: 商河县| 柳州市| 蓝山县| 沙河市| 晋宁县| 五台县| 柳江县| 伊宁市| 锦州市| 苍南县| 华宁县| 萨嘎县| 扎囊县| 治多县| 渝北区| 临高县| 巨野县| 南安市| 阜城县| 喀什市| 西贡区| 湖北省| 凌源市| 新源县| 高青县| 定州市| 桃源县| 栾城县| 梁平县| 涞水县| 鄂州市| 奎屯市| 天台县| 渝北区| 丹凤县| 岚皋县| 北川| 外汇| 唐海县| 额济纳旗| 锡林郭勒盟|