java中子類繼承父類時是否繼承構(gòu)造函數(shù)

          java繼承中對構(gòu)造函數(shù)是不繼承的,只是調(diào)用(隱式或顯式)。

          以下是例子:

           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);
           
           }
          }

          編譯后執(zhí)行結(jié)果如下是什么呢?

          分析:SonClass s = new SonClass(66);執(zhí)行這句時,調(diào)用

           public SonClass(int c) {
                           System.out.println(1234);//系統(tǒng)會自動先調(diào)用父類的無參構(gòu)造函數(shù)(super())
                  }

          在這個構(gòu)造函數(shù)中,等價于

           public SonClass(int c) {

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

          所以結(jié)果是    100
                       
          1234

          3.如果子類構(gòu)造函數(shù)是這樣寫的

          public SonClass(int c) {

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

          執(zhí)行結(jié)果是   22
                      1234

          總結(jié)1:構(gòu)造函數(shù)不能繼承,只是調(diào)用而已。

          如果父類沒有無參構(gòu)造函數(shù)

          創(chuàng)建子類時,不能編譯,除非在構(gòu)造函數(shù)代碼體中第一行,必須是第一行顯式調(diào)用父類有參構(gòu)造函數(shù)

          如下:

          SonClass (){

          super(777);//顯示調(diào)用父類有參構(gòu)造函數(shù)

          System.out.println(66);

          }

          如果不顯示調(diào)用父類有參構(gòu)造函數(shù),系統(tǒng)會默認調(diào)用父類無參構(gòu)造函數(shù)super();

          但是父類中沒有無參構(gòu)造函數(shù),那它不是不能調(diào)用了。所以編譯就無法通過了。

          總結(jié)2:創(chuàng)建有參構(gòu)造函數(shù)后,系統(tǒng)就不再有默認無參構(gòu)造函數(shù)。

          如果沒有任何構(gòu)造函數(shù),系統(tǒng)會默認有一個無參構(gòu)造函數(shù)。

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

          評論

          # re: java中子類繼承父類時是否繼承構(gòu)造函數(shù)[未登錄] 2012-12-01 11:11

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


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


          網(wǎng)站導航:
           
          <2012年12月>
          2526272829301
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          導航

          統(tǒng)計

          常用鏈接

          留言簿(2)

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 日喀则市| 栖霞市| 且末县| 花垣县| 阳原县| 威宁| 岐山县| 呼伦贝尔市| 克拉玛依市| 洛浦县| 白山市| 鹤岗市| 固始县| 三穗县| 云阳县| 黄梅县| 新宁县| 垦利县| 南丹县| 巫山县| 柳州市| 宝清县| 栾城县| 凤凰县| 平陆县| 若羌县| 新密市| 合肥市| 万荣县| 武鸣县| 嘉义市| 临夏县| 乌兰察布市| 中卫市| 固镇县| 台山市| 茂名市| 郸城县| 岳阳县| 资源县| 衡山县|