成员内部类
// 外部类
public class OuterClass {
private String outerVar = "Outer Variable";
// 成员内部类
public class MemberInnerClass {
private String innerVar = "Inner Variable";
// 内部类的方法,可以访问外部类的成员变量和方法
public void display() {
System.out.println("Accessing outer variable: " + outerVar);
System.out.println("Inner variable: " + innerVar);
}
}
// 外部类的方法,用于创建内部类实例并调用其方法
public void outerMethod() {
MemberInnerClass inner = new MemberInnerClass();
inner.display();
}
public static void main(String[] args) {
// 必须先创建外部类实例,才能创建成员内部类实例
OuterClass outer = new OuterClass();
OuterClass.MemberInnerClass inner = outer.new MemberInnerClass();
inner.display();
// 或者通过外部类方法创建内部类实例并调用方法
outer.outerMethod();
}
}
静态内部类
// 外部类
public class OuterClass {
private static String outerStaticVar = "Outer Static Variable";
private String outerInstanceVar = "Outer Instance Variable";
// 静态内部类
public static class StaticInnerClass {
private void display() {
// 只能访问外部类的静态成员变量和方法
System.out.println("Accessing outer static variable: " + OuterClass.outerStaticVar);
// 不能直接访问外部类的非静态成员变量和方法
// System.out.println(outerInstanceVar); // 这将导致编译错误
}
public void show() {
display();
System.out.println("Inside StaticInnerClass show method.");
}
}
// 外部类的方法
public void outerMethod() {
StaticInnerClass inner = new StaticInnerClass();
inner.show();
}
public static void main(String[] args) {
// 不需要外部类实例就可以创建静态内部类的实例
OuterClass.StaticInnerClass inner = new OuterClass.StaticInnerClass();
inner.show();
// 也可以通过外部类实例来调用静态内部类,但这不是必需的
OuterClass outer = new OuterClass();
outer.outerMethod();
}
}
匿名内部类,
就是new 一个接口,完成它的实现