昨晚翻了翻《Core Java2》,發(fā)現(xiàn)一個需要注意的要點,就是子類在引用父類的構(gòu)造方法時,能不能重載父類的構(gòu)造器?
          廢話少說,直接上代碼測試:
          例:
                SuperClass
           1package com.inheritance;
           2
           3public class SuperClass {
           4    public SuperClass(String n,int a){
           5        name = n;
           6        salary =a;
           7    }

           8    private String name;
           9    private int salary;
          10    public String getName(){
          11        return name;
          12    }

          13    public int getSalary(){
          14        return salary;
          15    }

          16
          17}

          18

                 ChildClass
           1package com.inheritance;
           2
           3public class ChildClass extends SuperClass{
           4     public ChildClass(String n,int a,int b){
           5         super(n,a);
           6         bonus = b;
           7     }

           8     private int bonus ;
           9     public int getSum(){
          10         return bonus +super.getSalary();
          11     }

          12     public String getName(){
          13         return super.getName();
          14     }

          15}

          16

                 TestClass
           1package com.inheritance;
           2
           3public class SuperTest {
           4    public  static void main(String[] args){
           5       ChildClass c = new ChildClass("b",20,30);
           6       System.out.println(c.getSum());
           7       System.out.println(c.getName());
           8    }

           9}

          10

          運行測試類,結(jié)果打印子類對象c的name和薪水。
          注意:我們的子類ChildClass中的構(gòu)造方法,它是調(diào)用了父類SuperClass的含有n,a參數(shù)的構(gòu)造方法。因為子類ChildClass不能直接訪問父類SuperClass的私有值域,可以通過這個super方法對這部分值域初始化。這樣父類的值域就被初始化,如name和salary。這樣,我們可以看到TestCalss中的第七行輸出的c.getName實際上是得到父類SuperClass的name,因為在產(chǎn)生c對象的時候,"b"參數(shù)實際上是傳遞給了父類的私有域name,super隱式調(diào)用了SuperClass。這樣在TestClass中取c.getName()返回的是super.getName().返回的當然是父類的name。

               另外,構(gòu)造方法不同于一般的方法。它不能由子類繼承。

          posted on 2007-12-26 14:05 湘江夜游神 閱讀(357) 評論(0)  編輯  收藏 所屬分類: JAVA生活

          Locations of visitors to this page

          主站蜘蛛池模板: 乌拉特中旗| 崇信县| 棋牌| 阳原县| 邢台市| 遂宁市| 旺苍县| 积石山| 平邑县| 东港市| 遵义市| 阳谷县| 西林县| 蒲城县| 元谋县| 神木县| 长顺县| 苍溪县| 潢川县| 新田县| 金乡县| 读书| 承德市| 凤山县| 昌乐县| 山西省| 贵定县| 林西县| 普定县| 乌海市| 仁寿县| 河北省| 隆回县| 留坝县| 泗阳县| 湘潭县| 拉萨市| 特克斯县| 乐昌市| 漯河市| 饶平县|