Как вызвать метод по умолчанию, определенный в интерфейсе ITest из подкласса? - PullRequest
0 голосов
/ 26 апреля 2020

Как вызвать метод по умолчанию, определенный в интерфейсе ITest? Метод, определенный в ITest, кажется, переопределен MyAbstract и не был случайно вызван в подклассе NotAmbiguousExample.

interface ITest {
    default void myMethod() {
        System.out.println("My interface method");
    } ;
}

abstract class MyAbstract {
    public void myMethod() {
        System.out.println("My abstract method");
    } ;
}

/**
 * Even we cast the class to interface, but only the method in super class is called? 
 */
class NotAmbiguousExample extends MyAbstract implements ITest {
    public static void main(String[] args) {
        NotAmbiguousExample notAmbiguousExample = new NotAmbiguousExample();
        notAmbiguousExample.myMethod();
        ITest iTest = (ITest) notAmbiguousExample ;
        iTest.myMethod();
    }
}
...