【发布时间】:2016-03-03 07:24:54
【问题描述】:
当我们使用接口中的任何方法时,它会要求我们覆盖所有未实现的方法。我们在实现该方法时也使用了“@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
}}
为什么还要强制覆盖接口中的所有方法?
【问题讨论】:
-
是的,它是压倒一切的。
@Override表示法确保该方法确实是一个被覆盖的方法,并且如果其中任何方法的方法签名发生变化并且不再有适合该签名的方法,则会产生编译时错误。
标签: java interface overriding implements