内部类定义:将一个类定义放在另一个类的内部,这就是内部类。
内部类是一种非常有用的特性,定义在类内部的类,持有外部类的引用,但是却对其他外部类不可见,有点像一种隐藏代码的机制。
创建内部类
1 package day04; 2 3 4 5 public class OutClass { 6 7 private String name; 8 9 private int age; 10 11 12 13 class InnerClass { 14 15 public InnerClass() { 16 17 name = "Jack"; 18 19 age = 26; 20 21 } 22 23 } 24 25 }
InnerClass就是outClass的一个内部类。每个内部类都能独立地继承一个(接口的)实现,无论外部类是否继承了某个(接口的)实现,对于内部类没有影响。这就是隐藏了内部实现细节。内部类拥有外部类的访问权。
内部类不仅可以定义在类的内部,还能定义在方法和作用域内部,这种被称为局部内部类,除此外还有匿名内部类、内部类可以实现Java中的多继承。定义内部类的方式:
- 一个在方法中定义的类(局部内部类)
- 一个定义在作用域内的类,这个作用域在方法的内部(成员内部类)
- 一个实现了接口的匿名类(匿名内部类)
- 一个匿名类,它扩展了非默认构造器的类
- 一个匿名类,执行字段初始化操作
- 一个匿名类,它通过实例初始化实现构造
每个类都会产生一个*.class的字节码文件,其中包含了如何创建该类型的对象的全部信息,那么如何表示内部类的性呢?可以实现$表示,比如OutcClass$Innerclass.class。