成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Overriding Methods in Java? – Always use @Override

Ryan_Li / 2068人閱讀

摘要:原文鏈接原作者譯者個人翻譯,水平有限,如有錯誤歡迎指出,謝謝注解在中被引入,注解是默認注解之一。現(xiàn)在我們創(chuàng)建一個測試類來檢驗在中覆蓋是如何工作的。得到該結果的原因是方法沒有被任何覆蓋,因此會嘗試調(diào)用的方法實現(xiàn)。

原文鏈接
原作者:Pankaj
譯者:smallclover
個人翻譯,水平有限,如有錯誤歡迎指出,謝謝!

Java @Override注解

Java Annotations在Java1.5中被引入,Override注解是Java默認注解之一。當我們在方法上使用這個注解的時候,它將告訴編譯器我們試圖覆蓋一個父類的方法。

讓我們看看java中如何覆蓋一個方法。

BaseClass.java

package com.journaldev.annotations;
 
public class BaseClass {
     
    public void doSomething(String str){
        System.out.println("Base impl:"+str);
    }
     
}

現(xiàn)在我們將創(chuàng)建一個子類,該子類覆蓋BaseClass類的doSomething()方法。

ChildClass.java

package com.journaldev.annotations;
 
public class ChildClass extends BaseClass{
 
   //@Override
   public void doSomething(String str){
       System.out.println("Child impl:"+str);
   }
 
}

請注意現(xiàn)在我們注釋掉了@Override注解。

現(xiàn)在我們創(chuàng)建一個測試類來檢驗在java中覆蓋是如何工作的。

OverrideTest.java

package com.journaldev.annotations;
 
public class OverrideTest {
 
    public static void main(String[] args) {
        BaseClass bc = new ChildClass();
        bc.doSomething("override");
    }
 
}

以上程序輸出結果如下:

Child impl:override

這里的bcBaseClass類型,但是運行的時候,它所指向的對象是ChildClass類型的,所以當我們調(diào)用doSomething(String str)方法的時候,它會在ChildClass中查找該方法,因此會有如上輸出
現(xiàn)在讓我們改變BaseClassdoSomething()方法,具體如下所示。

//Change argument from String to Object
public void doSomething(Object str){
    System.out.println("Base impl:"+str);
}

你將注意到,編譯器將不會拋出任何警告或者錯誤 并且如果你現(xiàn)在運行這個測試程序將得到以下輸出。

Base impl:override

得到該結果的原因是 BaseClass doSomething(Object str)方法沒有被任何ChildClass覆蓋,因此會嘗試調(diào)用BaseClass的方法實現(xiàn)。ChildClass只是重寫了doSomething()方法而已。

如果你沒有注釋掉ChildClass@Override注解,在你更改了BaseClass中的doSomething()方法后你將會得到編譯器給出的錯誤信息,錯誤信息如下所示:

The method doSomething(String) of type ChildClass must override or implement a supertype method

很明顯,使用@Override注解將會確保超類對方法簽名的任何改變都將導致一個警告產(chǎn)生,你必須進行必要的修改來確保類正常的工作。

在編譯時解決一個潛在的問題要好于在運行時解決問題,所以當你想要覆蓋超類的方法的時候,請確保一直使用@Override注解。

ps:譯者認為,養(yǎng)成一種良好的編程習慣有助于查找錯誤和理清思路,對于如何管理和編輯代碼,每個人應該都有自己的一套方法,仁者見仁智者見智吧。

google的Java代碼編寫規(guī)范Google-Java-Style,網(wǎng)絡上已經(jīng)有人做過翻譯,這里只貼出了英文版的地址,中文版請自行尋找哦(≧▽≦)/

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://systransis.cn/yun/65815.html

相關文章

  • Java Interview Questions (1)

    What is Java? Java is a high-level platform-independent object oriented programming language. List some features of Java? Object Oriented, Platform Independent, Multi-threaded, Interpreted, Robust, pa...

    xuxueli 評論0 收藏0
  • [LintCode] Shape Factory

    摘要:這道題考了,具體概念如下除此之外,還需要注意正則表達式的寫法。 Problem Factory is design pattern in common usage. Implement a ShapeFactory that can generate correct shape. Example ShapeFactory sf = new ShapeFactory(); Shape s...

    zebrayoung 評論0 收藏0
  • Java interview question

    what is the difference between overriding and overloading? Overriding is resolved at runtime while overloading is compile time. Override: is a language feature that allows a subclass to provide a spec...

    thekingisalwaysluc 評論0 收藏0
  • JVM執(zhí)行方法調(diào)用(一)- 重載與重寫

    摘要:重寫語言中的定義子類方法有一個方法與父類方法的名字相同且參數(shù)類型相同。父類方法的返回值可以替換掉子類方法的返回值。思維導圖參考文檔極客時間深入拆解虛擬機是如何執(zhí)行方法調(diào)用的上廣告 原文 回顧Java語言中的重載與重寫,并且看看JVM是怎么處理它們的。 重載Overload 定義: 在同一個類中有多個方法,它們的名字相同,但是參數(shù)類型不同。 或者,父子類中,子類有一個方法與父類非私有方...

    韓冰 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<