为什么我们在从Interface实现方法时使用@Override?它真的覆盖了这个方法吗?

时间:2016-03-03 07:24:54

标签: java interface override implements

虽然我们使用界面中的任何方法,但它要求我们覆盖所有未实现的方法。我们也在实现方法时使用'@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

    }}    

为什么必须覆盖界面中的所有方法?

2 个答案:

答案 0 :(得分:1)

是的,该方法是从超类中覆盖的。如果任何这些方法的方法签名都会发生变化,这种表示法会产生编译时错误。

覆盖是使用继承时可用的功能。

当从另一个类扩展的类想要使用父类的大部分功能并希望在某些情况下实现特定功能时使用它。

答案 1 :(得分:0)

@Overriding确保该方法是正确的覆盖,如果它不是有效的覆盖,则会产生编译时错误。 不必覆盖类中接口的所有方法,您需要在此方案中声明类“abstract”。

但是如果你想要一个具体的类(可以实例化)来实现一个接口,你需要在这个具体的类中实现你的接口的所有方法