声明:我的所有文章,都是对网上教学视频的整理,包括狂神说、尚硅谷、黑马程序员等等,用来作为参考资料,无任何商业使用,请广大网友参考,不喜勿喷,谢谢。(注意,由于网站的原因,有些代码字符可能会出现问题,建议大家阅读代码时,最好和下面的图片对应来看) 一、引入 当一个事物的内部,还有一个部分需要一个完整的结构进行描述,而这个内部的完整的结构又只为外部事物提供服务,那么整个内部的完整结构最好使用内部类。 二、定义 在Java中,允许一个类的定义位于另一个类的内部,前者称为内部类,后者称为外部类。 Inner class一般用在定义它的类或语句块之内,在外部引用它时必须给出完整的名称, Inner class的名字不能与包含它的外部类类名相同。 分类:成员内部类(static成员内部类和非static成员内部类)、局部内部类(不谈修饰符)、匿名内部类 三、成员内部类作为类的成员的角色 1、和外部类不同,Inner class 还可以声明为private或protected 2、可以调用外部类的结构 3、Inner class可以声明为static的,但此时就不能再使用外层类的非static的成员变量 四、成员内部类作为类的角色: 1、可以在内部定义属性、方法、构造器等结构 2、可以声明为abstract类,因此可以被其它的内部类继承 3、可以声明为final 4、编译以后生成OuterClass$InnerClass.class字节码文件(也适用于局部内部类) 五、注意 1、非static的成员内部类中的成员不能声明为static的,只有在外部类或static的成员内部类中才可以声明static成员 2、外部类访问成员内部类的成员,需用“内部类.成员”或“内部类对象.成员”的方式 3、成员内部类可以直接适用外部类的所有成员,包括私有的数据 4、当想要在外部类的静态成员部分适用内部类时,可以考虑内部类声明为静态的 六、示例一 七、示例二