java 如何调用内部类的方法
调用内部类的方法
在Java中,调用内部类的方法需要先创建内部类的实例。根据内部类的类型(成员内部类、静态内部类、局部内部类或匿名内部类),调用方式有所不同。
成员内部类的方法调用
成员内部类是非静态的,必须通过外部类的实例来创建内部类对象。

public class OuterClass {
public class InnerClass {
public void innerMethod() {
System.out.println("Inner method called");
}
}
public static void main(String[] args) {
OuterClass outer = new OuterClass();
OuterClass.InnerClass inner = outer.new InnerClass();
inner.innerMethod();
}
}
静态内部类的方法调用
静态内部类不依赖于外部类的实例,可以直接创建。

public class OuterClass {
public static class StaticInnerClass {
public void staticInnerMethod() {
System.out.println("Static inner method called");
}
}
public static void main(String[] args) {
OuterClass.StaticInnerClass staticInner = new OuterClass.StaticInnerClass();
staticInner.staticInnerMethod();
}
}
局部内部类的方法调用
局部内部类定义在方法或作用域内,只能在定义它的方法或作用域中使用。
public class OuterClass {
public void outerMethod() {
class LocalInnerClass {
public void localInnerMethod() {
System.out.println("Local inner method called");
}
}
LocalInnerClass localInner = new LocalInnerClass();
localInner.localInnerMethod();
}
public static void main(String[] args) {
OuterClass outer = new OuterClass();
outer.outerMethod();
}
}
匿名内部类的方法调用
匿名内部类通常用于实现接口或继承类,并直接调用方法。
public class OuterClass {
interface Greeting {
void greet();
}
public static void main(String[] args) {
Greeting greeting = new Greeting() {
@Override
public void greet() {
System.out.println("Anonymous inner method called");
}
};
greeting.greet();
}
}
注意事项
- 成员内部类不能直接实例化,必须通过外部类实例创建。
- 静态内部类可以直接实例化,无需外部类实例。
- 局部内部类和匿名内部类的作用域有限,不能在定义它们的方法或作用域之外使用。
- 匿名内部类通常用于一次性使用的场景,如事件监听器或简单的接口实现。






