Java基礎:第三十七講 成員方法的繼承與覆蓋

來源:互聯網
上載者:User

成員方法的繼承與覆蓋與成員變數的繼承與覆蓋類似,但有區別。

類似在於可以繼承的成員變數和成員方法的類型是相同的,可以繼父類的public和protected成員方法。

區別在於成員方法是真的覆蓋,定義與父類相同的方法之後,在父類中相同的方法在子類中是不存在的。

首先要確定什麼是相同的方法?相同的方法指的是:方法名相同、參數個數相同、參數類型相同、傳回值類型。與參數的名字無關。

例如,下面的方法是相同的方法:

public void setAge(int age){...}

public void  setAge(int sage){...}

下面的方法是不同的方法:

public void setAge(int age){...}

public void setAge(String age){...}

注意:子類在覆蓋父類的方法的時候,不能修改傳回值類型,不能縮小存取權限,下面的兩種方式都是錯誤的。

 父類中:

   public int getA(){
     return a;
    }

子類中:

    protected int getA(){   // 縮小了存取權限
     return a;
    }

    public String getA(){   // 修改了傳回值類型
     return String.valueOf(a);
    }

方法用於定義行為,方法的覆蓋是子類修改了父類中該行為的實現方式。方法的覆蓋與多態有關。

如果方法沒有覆蓋,會直接繼承,如果被覆蓋,父類的該方法在子類中就不存在了。

下面這道題,會是什麼結果呢?

package test;

public class Parent {
    public int a=10;
    public int getA(){
     return a;
    }
}

package test;

public class Child extends Parent{
    public int a=20;
    public int getParentA(){
     return super.a;
    }
    public int getChildA(){
     return a;
    }
}

package test;

public class Test {
    public static void main(String args[]){

        Child child = new Child();
       
        System.out.println(((Parent)child).a);
       
        System.out.println(child.getParentA());
        System.out.println(child.getChildA());
        System.out.println(child.getA());

 }

}

查看運行結果:

10
10
20
10

請注意最後一個。

上一次:第三十六講 成員變數的繼承與覆蓋下一次:第三十八講 抽象類別與抽象方法李緒成 CSDN Blog:http://blog.csdn.net/javaeeteacher邀請您為好友:http://student.csdn.net/invite.php?u=124362&c=7be8ba2b6f3b6cc5

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.