调用超类中重写的默认接口方法

Call default interface method which is overridden in superclass

我有一个接口和抽象class。

public class TEST extends Abstract implements Inter2{
    void print() {
        toDO();
    }

    public static void main(String[] args) {
        new TEST().toDO();
    }
}

abstract class Abstract {

    public void toDO() {
        System.out.println("Abstract is called");
    }
}

interface Inter2 {

    default void toDO() {
        System.out.println("Inter2 is called");
    }
}

我想强制 class 接口默认方法而不是抽象 class。

您必须在测试中覆盖 toDO class:

@Override
public void toDO() {
    Inter2.super.toDO();
}