关于内部类的一些规则
静态内部类
静态方法:外部类的静态成员变量、自己的静态成员变量
非静态方法:外部类的静态成员变量、自己的静态成员变量、自己的非静态成员变量
非静态内部类
无静态方法
非静态方法:外部类的静态成员变量、外部类的非静态成员变量、自己的非静态成员变量
/* 下面程序演示如何在java中创建静态内部类和非静态内部类 */ public class OuterClass { private static String msg1 = "name"; private String msg2 = "name"; // 静态内部类 public static class NestedStaticClass { private static String msg3 = "name"; private String msg4 = "name"; public void printMessage() { System.out.println(msg1); // System.out.println(msg2); //不可以访问外部非静态成员变量 System.out.println(msg3); System.out.println(msg4); } public static void printMessage2() { System.out.println(msg1); System.out.println(msg3); } } // 非静态内部类 public class InnerClass { // private static String msg5 = "name"; //不可以声明静态成员变量和静态方法 private String msg6 = "name"; public void display() { System.out.println(msg1); System.out.println(msg2); System.out.println(msg6); } } } class Main { // 怎么创建静态内部类和非静态内部类的实例 public static void main(String args[]) { // 创建静态内部类的实例 OuterClass.NestedStaticClass printer = new OuterClass.NestedStaticClass(); // 创建静态内部类的非静态方法 printer.printMessage(); // 为了创建非静态内部类,我们需要外部类的实例 OuterClass outer = new OuterClass(); OuterClass.InnerClass inner = outer.new InnerClass(); // 调用非静态内部类的非静态方法 inner.display(); // 我们也可以结合以上步骤,一步创建的内部类实例 OuterClass.InnerClass innerObject = new OuterClass().new InnerClass(); // 同样我们现在可以调用内部类方法 innerObject.display(); } }