当你在InnerClass 中定义一个方法时,你需要有一个InnerClass 的实例来调用它的(非静态)方法。因此,我们在您的示例中添加了一个简单的方法...
public class OuterClass implements Interface1 {
public class InnerClass implements Interface2 {
public void method() {
System.out.println("hello");
}
}
}
...创建InnerClass 的实例并像这样调用方法:
public static void main(String[] args) {
OuterClass outer = new OuterClass();
OuterClass.InnerClass inner = outer.new InnerClass();
inner.method();
}
// output: hello
由于内部类不是静态的,您需要一个OuterClass 的实例来创建InnerClass 的实例,您可以在该实例上调用您的方法。
如果将内部类设为静态,也可以在InnerClass中定义静态方法:
public class OuterClass implements Interface1 {
public static class InnerClass implements Interface2 {
public void method() {
System.out.println("hello");
}
public static void staticMethod() {
System.out.println("static");
}
}
}
在这种情况下,您不需要OuterClass 的实例来构造InnerClass 的实例,因为它是静态可用的并且未绑定到实例。此外,您可以在没有InnerClass 实例的情况下调用内部类的静态方法:
// call static method without any instance
OuterClass.InnerClass.staticMethod();
// create instance of inner class without instance of outer class
OuterClass.InnerClass inner = new OuterClass.InnerClass();
inner.method(); // call method of inner class
// output: static
hello