簡體   English   中英

為什么在從Interface實現方法時使用@Override? 它真的覆蓋方法嗎?

[英]Why we use @Override while implementing a method from Interface ? Does it really Override the method?

當我們使用接口中的任何方法時,它都會要求我們覆蓋所有未實現的方法。 在實現該方法時,我們也在使用“ @Override”注釋。 它真的稱為覆蓋嗎? 因為接口只包含方法定義(沒有可執行代碼)。 界面說,

public interface ITestListener extends ITestNGListener {
  void onTestStart(ITestResult result);
  public void onTestSuccess(ITestResult result);
  public void onTestFailure(ITestResult result);
  public void onTestSkipped(ITestResult result);
  public void onTestFailedButWithinSuccessPercentage(ITestResult result);
}

實現類是

public class TestNGTestBase implements ITestListener{  @Override
    public void onTestStart(ITestResult result) {
//xyz

    }                                                                                              @Override
    public void onTestSuccess(ITestResult result) { /// xyz} @Override
    public void onTestSkipped(ITestResult result) {


    }

    @Override
    public void onTestFailedButWithinSuccessPercentage(ITestResult result) {
        // TODO Auto-generated method stub

    }}    

還為什么這是強制性的才能覆蓋接口中的所有方法?

是的,該方法是從超類重寫的。 如果這些方法中任何一個的方法簽名會更改,則該表示法將產生編譯時錯誤。

覆蓋是使用繼承時可用的功能。

當從另一個類擴展的一個類想要使用父類的大多數功能,並希望在某些情況下實現特定功能時,將使用它。

@Overriding確保該方法是正確的替代,如果該方法不是有效的替代,則會給出編譯時錯誤。 強制覆蓋類中接口的所有方法不是強制性的,在這種情況下,您需要聲明類“抽象”。

但是,如果您想要一個具體的類(可以實例化)來實現一個接口,則需要在這個具體的類中實現接口的所有方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM