overload和overide的區別

來源:互聯網
上載者:User
overload和override的區別 override(重寫) 
1、方法名、參數、傳回值相同。
2、子類方法不能縮小父類方法的存取權限。
3、子類方法不能拋出比父類方法更多的異常(但子類方法可以不拋出異常)。
4、存在於父類和子類之間。
5、方法被定義為final不能被重寫。
overload(重載)
1、參數類型、個數、順序至少有一個不相同。  
2、不能重載只有傳回值不同的方法名。
3、存在於父類和子類、同類中。

Java6的@override註解與Java5不同之處

 

首先看一下下面的範例程式碼 :

Parent.java

 

public class Parent...{    public void parentMethod() ...{    }}

IChild.java

 

public interface IChild ...{    void interfaceMethod();}

Child.java

 

public class Child extends Parent implements IChild ...{    @Override    public void parentMethod() ...{    }    @Override    public void interfaceMethod() ...{    }}

由於代碼很簡單,我就不做說明

上述代碼在jdk6下可以編譯通過

而在jdk5下編譯無法通過,輸出的錯誤資訊如下:

Child.java:7: 方法未覆蓋其父類的方法

   @Override

    ^

1 錯誤

上面的錯誤資訊說在Child.java第七行的Override註解是不對的,不對的原因是該方法(interfaceMethod)不是父類方法。

當然,實際上這個方法是類實現的介面中方法,但是,這個文法的jdk6的下面是可以通過的,也就是說java6認為類覆蓋父類方法與實現介面方法都叫override,而jdk5不是這樣認為的,不知道這是當初jdk5的bug,還是當初就是認為覆蓋父類方法與實現介面方法是不一樣的,不得而知。但是從OO角度來看,覆蓋父類方法與實現介面方法都可以認為override,因為他們目的都是一樣的,都是為了重用,都是多態的一種表現方式。這從jdk6的支援這個功能就可以看出。

差一點忘了:

標準的java api文檔java5與java6對Override annotation的的解釋一樣的

java5:

Indicates that a method declaration is intended to override a method declaration in a superclass. If a method is annotated with this annotation type but does not override a superclass method, compilers are required to generate an error message.

java6:

Indicates that a method declaration is intended to override a method declaration in a superclass. If a method is annotated with this annotation type but does not override a superclass method, compilers are required to generate an error message.

兩段說明一模一樣,讓人搞不清楚的是java6文檔沒有提到Override對interface的支援。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.