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接口!  回復  更多評論   


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


          網站導航:
           
          <2008年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導航

          統計

          常用鏈接

          留言簿(2)

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 巴里| 织金县| 玉田县| 汉源县| 东港市| 疏勒县| 霍州市| 汝阳县| 惠水县| 绥滨县| 镇江市| 广昌县| 星子县| 绍兴县| 额济纳旗| 澳门| 农安县| 昭平县| 资兴市| 珠海市| 辽阳市| 碌曲县| 扎囊县| 亚东县| 鹤山市| 宁蒗| 本溪| 黎平县| 邵阳市| 德惠市| 巩义市| 盘锦市| 滨州市| 鄯善县| 闻喜县| 松原市| 尚志市| 建瓯市| 拉孜县| 独山县| 犍为县|