2016-03-03 55 views
0

雖然我們使用接口中的任何方法,但卻要求我們重寫所有未實現的方法。我們還在實施該方法時使用'@Override'註釋。它真的叫做覆蓋?因爲接口僅包含方法定義(不包含可執行代碼)。該接口是說,爲什麼我們在實現Interface的方法時使用@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 

    }}  

也這是爲什麼必須重寫接口中的所有方法?

+3

是的,它是壓倒你的接口的所有方法。 '@ Override'符號確保該方法真的被重寫,如果任何這些方法的方法簽名會改變,並且不會有適合該簽名的方法,將會產生編譯時錯誤。 – SomeJavaGuy

回答

1

是的方法是從超類重寫。如果這些方法中的任何方法的方法簽名都會改變,那麼這個表示法會產生編譯時錯誤。

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

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

0

@Overriding確保該方法是一個正確的重寫,如果它不是一個有效的重寫,則會導致編譯時錯誤。 覆蓋類中所有接口的方法並不是強制的,你需要在這個場景中聲明類「abstract」。

但是,如果你想有一個具體類(可以實例化)實現一個接口,您將需要實現在這個具體的類

相關問題