Java内部类和静态内部类的区别
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();