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 閱讀(6878) 評論(1)  編輯  收藏

          評論

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

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


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


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

          導航

          統計

          常用鏈接

          留言簿(2)

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 乐清市| 喀喇沁旗| 张北县| 溧水县| 济源市| 东乌珠穆沁旗| 南部县| 垫江县| 新巴尔虎右旗| 黎平县| 嘉善县| 湖南省| 左云县| 临江市| 黎川县| 休宁县| 沛县| 昌宁县| 册亨县| 南澳县| 邹城市| 玉林市| 湘乡市| 奈曼旗| 甘谷县| 达州市| 泗洪县| 潞城市| 腾冲县| 铁岭县| 呼图壁县| 西昌市| 天镇县| 潮安县| 新民市| 诏安县| 岳阳市| 连州市| 常宁市| 东明县| 成都市|