• <acronym id="danlv"><form id="danlv"></form></acronym>
  • <dd id="danlv"><rt id="danlv"></rt></dd>
      <var id="danlv"><rt id="danlv"><big id="danlv"></big></rt></var>
      1. <code id="danlv"><ol id="danlv"></ol></code>
        <var id="danlv"><rt id="danlv"></rt></var>
          1. <code id="danlv"></code>
            返回首頁
            當前位置: 主頁 > 網絡編程 > Jsp實例教程 >

            @Override的作用和使用基礎教程

            時間:2013-07-13 22:51來源:知行網www.n1979.com 編輯:麥田守望者

             如果想重寫父類的方法,比如toString()方法的話,在方法前面加上@Override 系統可以幫你檢查方法的正確性,
            @Override
            public String toString(){…}這是正確的
            一旦寫錯 寫成這樣
            @Override
            public String tostring(){…}
            編譯器可以檢測出這種寫法是錯誤的 這樣能保證你的確重寫的方法正確
            而如果不加@Override
            public String tostring(){…}這樣編譯器是不會報錯的 它只會認為這是你自己新加的一個方法而已

            ————————————————————

            @Override的用法:

            Override:
            java.lang.Override是一個marker annotation類型,它被用作標注方法。它說明了被標注的方法重載了父類的方法,起到了斷言的作用。如果我們使用了這種annotation在一個沒有覆蓋父類方法的方法時,java編譯器將以一個編譯錯誤來警示。
            這個annotaton常常在我們試圖覆蓋父類方法而確又寫錯了方法名時發揮威力。

            使用方法極其簡單:在使用此annotation時只要在被修飾的方法前面加上@Override。
            下面的代碼是一個使用@Override修飾一個企圖重載父類的toString方法,而又存在拼寫錯誤的sample:
            清單1:

            @Override public String toSting() { // 注意方法名拼寫錯了 return "[" + super.toString() + "]";}
            ——————————————————-
            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的支持。

            ------分隔線----------------------------
            標簽(Tag):Java JAVA實例教程 JAVA基礎教程 Java源代碼 Java技巧
            ------分隔線----------------------------
            推薦內容
            猜你感興趣
            日韩在线av免费视久久