1. 非静态内部类
1.1 成员内部类=普通内部类
public class OutClass {
class InnerClass {
public void memberInner() {
System.out.println("成员内部类");
}
}
public static void main(String[] args) {
OutClass outClass = new OutClass();
InnerClass innerClass = outClass.new InnerClass();
}
}
1.2 方法内部类=局部内部类
public class OutClass {
public void methodInner() {
class B {
}
B b = new B();
}
}
1.3 匿名内部类
class OutClass {
public static void main(String[] args) {
new BBBB() {
public void b() {
System.out.println("bbbb");
}
};
}
}
interface BBBB {
void b();
}
2. 静态内部类
class StaticInner {
public static class Inner {
public void test() {
System.out.println("inner");
}
}
}
class StaticInnerClassTest {
public static void main(String[] args) {
StaticInner.Inner inner = new StaticInner.Inner();
inner.test();
}
}
3. 使用内部类的好处
- 内部类可以有多个实例,每个实例都有自己的状态信息,并且与其外部类对象的信息相互独立;
- 在单个外部类中,可以让多个内部类以不同的方式实现同一个接口,或继承同一个类;
- 方便将存在一定逻辑关系的类组织在一起,又可以对外界隐藏;
- 方便编写事件驱动程序;
- 方便编写线程代码。