昨晚翻了翻《Core Java2》,發(fā)現(xiàn)一個(gè)需要注意的要點(diǎn),就是子類在引用父類的構(gòu)造方法時(shí),能不能重載父類的構(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

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

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

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

          Locations of visitors to this page

          主站蜘蛛池模板: 杂多县| 大新县| 乡城县| 茶陵县| 韶关市| 凤城市| 商南县| 湘阴县| 伊宁县| 平湖市| 上饶县| 井冈山市| 桃江县| 古浪县| 乌兰县| 怀仁县| 台北市| 东乌| 陆川县| 商丘市| 哈尔滨市| 江城| 钦州市| 满洲里市| 绥德县| 望奎县| 拉萨市| 巴林右旗| 忻城县| 乌鲁木齐市| 万盛区| 辽阳市| 济宁市| 武乡县| 桦南县| 夏津县| 陇川县| 哈巴河县| 本溪市| 肥西县| 汝阳县|