我一直在阅读关于Java中@ Override使用的一些问题。 (例如这个关于override的问题和这个关于默认方法的问题,以及显然的文档) 然而,我仍然感到困惑。
我被教导要始终在类中使用和实现接口,当该接口中的所有行为都需要被类使用时。我明白了。但是,就像我所学到的那样,您会执行以下操作(部分摘自文档):
public interface TimeClient {
void setTime(int hour, int minute, int second);
}
然后由一个类来实现。
public class TestSimpleTimeClient implements TimeClient {
public static void main(String[] args) {
}
@Override
public void setTime(int hour, int minute, int second) {
System.out.println(hour + " " + minute + " " +second);
}
}
我困扰的是接口中方法的实现。它并不做任何事情,只是声明了一个带参数的方法,但没有其他操作。然后你在实现该接口的类中覆盖该方法。
我知道这是一种“强制”类实现方法的方式,但我不明白在某些特定用例中它有什么用处。
比方说,我有一个接口由几个类实现。我想让大多数这些类共享方法的相同实现,但不是全部。逻辑上和字符效率最高的方法是有一种方法来说明:这些类采用接口中的默认方法,而这些类覆盖默认方法。我该如何做到这一点?覆盖方法的那个类是否只需实现它,而那些简单使用默认方法的类则需要扩展它?如果你只想在接口的特定方法中使用此行为,该怎么办?