内部类是Java提供的一个常用语法,内部类能提供更好的封装,而且可以直接访问外部类的private成员。在一些特殊场合下使用,可能产生一些陷阱。
一、非静态内部类的构造器
非静态内部类必须寄生在外部类的实例中,没有外部类的对象,就不可能产生非静态的内部类对象。
系统会在编译阶段总会为非静态内部类的构造器增加一个参数,非静态内部类的构造器的第一个形参类型总是外部类。也就是说非静态内部类没有无参的构造方法。
二、非静态内部类不能拥有静态成员
对于非静态内部类而言,由于它本身就是一个非静态的上下文环境,因此非静态内部类不允许拥有静态成员。