- 定义方式不同:
- 内部类:内部类是一个类的成员,它定义在另一个类的内部,并且可以访问外部类的成员变量和方法。
- 静态内部类:静态内部类是一个静态的内部类,它定义在另一个类的内部,但是与外部类的实例无关,可以直接通过外部类来访问。
- 访问方式不同:
- 内部类:内部类可以访问外部类的成员变量和方法,包括私有成员。
- 静态内部类:静态内部类不能直接访问外部类的非静态成员,只能访问外部类的静态成员。
- 生命周期不同:
- 内部类:内部类的生命周期与外部类对象的生命周期相关联,只有通过外部类对象来创建内部类的实例。
- 静态内部类:静态内部类与外部类对象无关,可以直接通过类名来创建静态内部类的实例。
- 内存占用不同:
- 内部类:每个内部类的对象都会持有一个外部类对象的引用,可能会增加内存消耗。
- 静态内部类:静态内部类不持有外部类对象的引用,不会增加内存消耗。
总的来说,静态内部类更加独立和灵活,而内部类更加紧密地与外部类相关联。选择使用内部类还是静态内部类取决于具体的需求和设计。