内部类指在类的内部再定义另一个类。
内部类的作用:
1)实现多重继承,因为java 中类的继承只能单继承,使用内部类可达到多重继承;
2)内部类可以很好的实现隐藏,一般非内部类,不允许有private 或protected权限的,但内部类可以;
3)减少了类文件编译后产生的字节码文件大小;
内部类在编译完后也会产生.class 文件,但文件名称是:外部类名称$内部类名称.class。分为以下几种:
1)成员内部类,作为外部类的一个成员存在,与外部类的属性、方法并列,成员内部类持有外部类的引用,成员内部类不能定义static 变量和方法。应用场合:每一个外部类都需要一个内部类实例,内部类离不开外部类存在。
2)静态内部类,内部类以static 声明,其他类可通过外部类.内部类来访问。特点:不会持有外部类的引用,可以访问外部类的静态变量,若要访问成员变量须通过外部类的实例访问。应用场合:内部类不需要外部类的实例,仅为外部类提供或逻辑上属于外部类,逻辑上可单独存在。设计的意义:加强了类的封装性(静态内部类是外部类的子行为或子属性,两者保持着一定关系),提高了代码的可读性(相关联的代码放在一起)。
3)匿名内部类,在整个操作中只使用一次,没有名字,使用new 创建,没有具体位置。
4)局部内部类,在方法内或是代码块中定义类