成员内部类
// 外部类
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 一个接口,完成它的实现