6.1 内部类概述
在Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类,把包含内部类的类称为外部类。我们知道,一个类中包含两部分:成员变量及成员函数。同样,内部类根据在外部类定义的位置也可以分为成员内部类和局部内部类。成员内部类定义位置同外部类的成员变量及成员方法,作为外部类的一个成员。局部内部类是定义在一个方法或者一个作用域里面的类。
【例6.1】定义Book类、School类,在School类中定义一个Book对象,在School类中的showInfo()方法中输出学校名称及book信息。


运行结果:

在例6.1中,Book类在定义时其访问权限是默认的,即在同一个包中的其他类里是可以使用Book类进行对象创建,试想,如果某本书是学校的内部教材,不希望其他学校使用,则学校可以把这种内部教材类定义在学校类中,作为学校类的成员内部类,这样外部其他类就无法直接使用到这个内部教材类。例6.2将例6.1中的Book类定义在School类中。(https://www.daowen.com)
【例6.2】用内部类实现例6.1功能。


运行结果:

注:内部类生成的字节码(.class)文件为“外部类名$内部类名”,以此标明该内部类是属于哪一个外部类。例6.2中的内部类的字节码文件是School$Book.class.class。