Java内部类和静态内部类的区别

时间:2021-10-07 16:38:00

Java的内部类根据是否使用static声明分为:静态内部类和非静态内部类,其中非静态内部类一般直接称为内部类。

内部类

内部类声明示例

public class OuterClass {
    ...
    public static class InnerClass {
        ...
    }

    public void doSomething() {
      InnerClass ic = new InnerClass();
      ...
    }
}

在外部类内部使用,如上面例子OuterClass里的doSomething()方法

InnerClass ic = new InnerClass();

如果是在非外部类调用,则首先需要实例化外部类,然后通过外部类调用内部类的构建方法:

OuterClass oc = new OuterClass();
InnerClass ic = oc.new InnerClass();

静态内部类

静态内部类的示例

public class OuterClass {
    ...
    public static class StaticInnerClass {
        ...
    }
}

构建静态内部类是不需要构建外部类的实例,只需要外部类引用静态内部类的构建方法即可:

StaticInnerClass sic = new OuterClass.StaticInnerClass();