class Test { interface I { int m(); } static abstract class Parent { abstract int foo() ; } static abstract class Child extends Parent { abstract int foo() ; void test() { I s = super::foo; I s1 = this::foo; Parent sup = null; I s2 = sup::foo; } } }