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

          主站蜘蛛池模板: 东阳市| 清新县| 达尔| 平武县| 宁波市| 大新县| 澄城县| 囊谦县| 隆回县| 叙永县| 鹤岗市| 汾西县| 大埔县| 施甸县| 太湖县| 迁安市| 潍坊市| 永昌县| 藁城市| 莱州市| 仪陇县| 衡水市| 修武县| 丽江市| 马尔康县| 双城市| 邵阳县| 博乐市| 峨边| 新民市| 富阳市| 东乌珠穆沁旗| 洱源县| 海南省| 蓬溪县| 新泰市| 资溪县| 长丰县| 额济纳旗| 乌鲁木齐市| 商南县|