java中子類繼承父類時是否繼承構造函數

          java繼承中對構造函數是不繼承的,只是調用(隱式或顯式)。

          以下是例子:

           public class FatherClass {

           public FatherClass() {
                 System.out.println(100);
           }

           public FatherClass(int age) {
                System.out.println(age);
           }

          }

           

          public class SonClass extends FatherClass{

                  public SonClass() {
                   }

                  
          public SonClass(int c) {
                           System.out.println(1234);
                  }
            
           public static void main(String[] args) {

            SonClass s = new SonClass(66);
           
           }
          }

          編譯后執行結果如下是什么呢?

          分析:SonClass s = new SonClass(66);執行這句時,調用

           public SonClass(int c) {
                           System.out.println(1234);//系統會自動先調用父類的無參構造函數(super())
                  }

          在這個構造函數中,等價于

           public SonClass(int c) {

                          super();//必須是第1行,否則不能編譯
                           System.out.println(1234);
                  }

          所以結果是    100
                       
          1234

          3.如果子類構造函數是這樣寫的

          public SonClass(int c) {

                          super(22);//必須是第1行,否則不能編譯
                                   
          //顯式調用了super后,系統就不再調用無參的super()了;
                           System.out.println(1234);
                  }

          執行結果是   22
                      1234

          總結1:構造函數不能繼承,只是調用而已。

          如果父類沒有無參構造函數

          創建子類時,不能編譯,除非在構造函數代碼體中第一行,必須是第一行顯式調用父類有參構造函數

          如下:

          SonClass (){

          super(777);//顯示調用父類有參構造函數

          System.out.println(66);

          }

          如果不顯示調用父類有參構造函數,系統會默認調用父類無參構造函數super();

          但是父類中沒有無參構造函數,那它不是不能調用了。所以編譯就無法通過了。

          總結2:創建有參構造函數后,系統就不再有默認無參構造函數。

          如果沒有任何構造函數,系統會默認有一個無參構造函數。

          posted on 2008-07-02 11:13 chenkai 閱讀(6883) 評論(1)  編輯  收藏

          評論

          # re: java中子類繼承父類時是否繼承構造函數[未登錄] 2012-12-01 11:11

          不錯,不過就是好像在代碼中定義了兩個public接口!  回復  更多評論   


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2012年12月>
          2526272829301
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          導航

          統計

          常用鏈接

          留言簿(2)

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 中西区| 樟树市| 仙桃市| 南宫市| 将乐县| 布拖县| 南靖县| 恩平市| 南投县| 泽库县| 凤翔县| 班玛县| 谢通门县| 竹北市| 连云港市| 桐城市| 金坛市| 清苑县| 鸡泽县| 甘谷县| 阿拉善盟| 桐城市| 大荔县| 德庆县| 克山县| 长阳| 临颍县| 历史| 云和县| 古浪县| 新建县| 茶陵县| 三江| 敖汉旗| 米泉市| 体育| 和龙市| 湖南省| 阳信县| 陆良县| 泸溪县|