- 问题一:接口和super关键字
public class Jim implements Jim1, Jim2 {
@Override
public void jim() {
Jim2.super.jim();//问题:这里为什么要这么用super
Jim1.super.jim();
}
public static void main(String[] args) {
new Jim().jim();
}
}
interface Jim1 {
default void jim() {
System.out.println("Jim1::jim");
}
}
interface Jim2 {
default void jim() {
System.out.println("Jim2::jim");
}
}
这段代码输出:
Jim2::jim Jim1::jim
- 问题二:静态类中为什么可以有非静态方法
public class TestBed {
public void f() {
System.out.println("f()");
}
public static class StaticClass {
//静态内部类中为什么可以有非静态方法?
public void test(){
System.out.println("static class method");
}
public static void main(String[] args) {
TestBed testBed = new TestBed();
testBed.f();
StaticClass staticClass = new StaticClass();
staticClass.test();
}
}
}
这段代码输出:
f() test
public interface ClassInInterface {
void howdy();//非静态方法
//接口里的类都是static的,为什么能有非静态方法?
class Test implements ClassInInterface {
@Override
public void howdy() {
System.out.println("Howdy!");
}
public static void main(String[] args) {
new Test().howdy();
}
}
}



