成员内部类

成员内部类是作为外部类成员的一部分而存在的,可以拥有成员变量和方法,也可以访问外部类的成员变量和方法

public class MemberOuterClass {
    private int outVar;
 
    public class InnerClass {
        public void display() {
            System.out.println("内部类打印OuterClass:"+outVar);
        }
    }
}

静态内部类

静态内部类与普通的内部类不同,它被声明为静态类,因此可以直接通过外部类来访问,不需要创建外部类的实例

public class StaticOuterClass {
    private static int outerVar;
 
    public static class InnerClass {
        public void display() {
            System.out.println("OuterVar: " + outerVar);
        }
    }
}

方法内部类

方法内部类是定义在方法内部的内部类,它只能在方法内部被使用。方法内部类可以访问方法的参数和局部变量,但是这些变量必须声明为 final。

public class MethodOutClass {
    public void display() {
        int localVar = 10;
 
        class InnerClass {
            public void print() {
                System.out.println("LocalVar: " + localVar);
            }
        }
 
        InnerClass inner = new InnerClass();
        inner.print();
    }
}

内部类实际应用

内部类在实际开发中有许多应用,以下是一些常见的用例:

  1. 实现接口的适配器类:内部类可以实现一个接口,并对其进行适配,从而提供更加灵活的接口调用方式。
  2. 实现数据结构的节点类:内部类可以作为外部类的节点类来存储数据,例如链表的节点。
  3. 访问外部类的私有成员:内部类可以访问外部类的私有成员,这在某些情况下可以提供更加安全的访问方式。