Java 为什么要重写接口方法?

Java 为什么要重写接口方法?,java,java-8,interface,overriding,Java,Java 8,Interface,Overriding,当扩展一个抽象类时,我理解为什么您必须超越某些方法。但当涉及到接口时,我不理解为什么必须这样做。如果必须实现接口的所有方法,那么重写它们有什么用 我说的是@Override注释。使用@Override完全是可选的。你不必使用它。如果您这样做,那么在实现接口时使用@Override与在扩展抽象类时使用它的推理大致相同。简而言之,它可以防止愚蠢的错误——如果接口被更改,它会迫使您相应地更改您的类,而不仅仅是添加突然需要实现的“新”方法。使用@Override完全是可选的。你不必使用它。如果您这样做,

当扩展一个抽象类时,我理解为什么您必须超越某些方法。但当涉及到接口时,我不理解为什么必须这样做。如果必须实现接口的所有方法,那么重写它们有什么用


我说的是
@Override
注释。

使用
@Override
完全是可选的。你不必使用它。如果您这样做,那么在实现接口时使用
@Override
与在扩展抽象类时使用它的推理大致相同。简而言之,它可以防止愚蠢的错误——如果接口被更改,它会迫使您相应地更改您的类,而不仅仅是添加突然需要实现的“新”方法。

使用
@Override
完全是可选的。你不必使用它。如果您这样做,那么在实现接口时使用
@Override
与在扩展抽象类时使用它的推理大致相同。简而言之,它可以防止愚蠢的错误——如果接口发生了更改,它会迫使您相应地更改类,而不仅仅是添加突然需要实现的“新”方法。

您是在谈论
@Override
注释吗?还是“覆盖”和“实施”的措辞让你感到困惑?我说的是@Override注释你应该检查一下SO的页面:你说的是
@Override
注释吗?还是“覆盖”和“实现”的措辞让你感到困惑?我说的是@Override注释你应该检查一下SO的页面:我理解。但是如果有一个未实现的方法,编译器不会给出一个错误吗?在这种情况下,它将作为一个检查。@MphiweNtuli当然,这与扩展抽象类时的情况相同。@MphiweNtuli编译器会告诉您何时忘了实现一个方法,但它不会告诉你什么时候应该实现的方法实际上没有实现。您似乎想用n个实际方法实现n个接口方法,因此会发现不匹配。但是如果你有n个方法,但是接口实际上有n-1个方法呢?您已经实现了所有方法,但有一个方法没有完成它应该做的事情。使用
@Override
,编译器将告诉您。@Holger这实际上是有道理的。我对它进行了测试,结果是这样的。我会继续使用覆盖,然后我明白了。但是如果有一个未实现的方法,编译器不会给出一个错误吗?在这种情况下,它将作为一个检查。@MphiweNtuli当然,这与扩展抽象类时的情况相同。@MphiweNtuli编译器会告诉您何时忘了实现一个方法,但它不会告诉你什么时候应该实现的方法实际上没有实现。您似乎想用n个实际方法实现n个接口方法,因此会发现不匹配。但是如果你有n个方法,但是接口实际上有n-1个方法呢?您已经实现了所有方法,但有一个方法没有完成它应该做的事情。使用
@Override
,编译器将告诉您。@Holger这实际上是有道理的。我对它进行了测试,结果是这样的。我将继续使用覆盖