用抽象方法覆盖默认接口方法

Overriding default interface method with abstract method

我觉得它很奇怪,想知道它是否是经常使用的东西。什么时候有用?

public interface InterA { 
   Object getInfo() throws Exception1; 
}
public interface InterB {
   public default Integer getInfo(Object s) {return 67;} 
}

public interface InterC extends InterA, InterB {
   @Override public abstract Integer getInfo(Object s);
}

当然可以。该名称本身表明它是 abstract。您可以这样做,因为该摘要 class 的实现 class 必须覆盖该方法。

当你决定做一个抽象的时候,你不需要去实现。

这在默认接口方法之前存在。例如,一个摘要 class 可以使

    @Override
    abstract public int hashCode();

强制子classes 为hashCode 提供实现,可能是因为摘要class.

强加了额外的要求