内部类(inner class)是定义在另一个类中的类,内部类中的方法可以访问创建该内部类的类(我们称其为外围类 outer class)的域中所有数据(包括私有/private数据)。并且,内部类可以对同一个包中的其他类隐藏起来。
但是由于内部类是一种编译器现象,在虚拟机中只存在常规类文件,所以在编译过程中,内部类被翻译成”外围类名$内部类名”的一个常规类,另一方面由于内部类有非常高的特权(可以访问外围类中的私有域)所以在一些特殊手段下(比如利用十六进制编辑器创建一个虚拟机指令调用该内部类),有可能会导致外围类内的私有域数据泄露。 |
|