Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用抽象方法重写默认接口方法_Java_Overriding_Abstract - Fatal编程技术网

Java 用抽象方法重写默认接口方法

Java 用抽象方法重写默认接口方法,java,overriding,abstract,Java,Overriding,Abstract,我觉得很奇怪,想知道这是不是经常使用的东西。什么时候有用 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 pub

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

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);
}

你当然可以这么做。名称本身表明它是
抽象的
。您可以这样做,因为该抽象类的实现类必须重写该方法


当您决定成为抽象时,不需要实现。

这在默认接口方法之前就存在。例如,一个抽象类可以

    @Override
    abstract public int hashCode();

强制子类为
hashCode
提供实现,可能是因为抽象类强加了额外的要求。

您可以测试它是否使用javac进行编译…@luigimendoza我做了,它编译了。它是否经常使用,什么时候有用?如果允许的话,你的问题不应该是。您正在请求使用此设计的用例。我建议你编辑这个问题,否则答案会是:是的,这是允许的。所以实现InterC的类,比如InterD,必须给出该方法的实现?假设我们有一个实现InterD的InterE,InterE可以使方法再次抽象吗?