在我们java类文件中,编译后基本都会生成一个*.class文件。该文件名是使用在.java
文件中的public class修饰的那个类名相同。
在个.java 源文件中,只能定义一个类名与文件名完全致的公开类,使用public class 关键字来修饰。但在面向对象语言中1 任何一个类都可以在内部定义另外一个类,前者为外部类,后者为内部类。内部类本身就是类的一个属性,与其他属性
定义方式一致。
内部类的种类
看代码图示:
分为:
静态内部类,如static class StaticinnerClass {} ;
成员内部类,如:private class InstancelnnerC!ass {} ;
局部内部类,定义在方法或者表达式内部,
匿名内部类,如:(new Thread(){} ).start()。
一般来说,我们在编译完一个个.java文件生成.class文件时,会按照以下方式命名:
外部类与内部类之间会使用$符号进行分割,其中:
1.匿名内部类会使用数字的方式进行编号。
2.方法内部类,会使用编号加方法名称来标识是哪个方法。

内部类的加载与内部类的加载一般不在同一阶段进行,在jdk源码中,定义包内可见静态内部类的方式比较常见,这样做的好处是:
1.作用域不会扩展到包外
2.可以通过“外部类.内部类”的方式直接访问
3.内部类可以访问外部类的所有静态属性和方法
使用方式:
一般用于类设计,定义类的时候
分析事物时,发现该事物描述中还有事物,而且这个事物还在访问被描述事物的内容。
这时就是把"还有的事物"定义成内部类来描述。
例如:人 心脏的关系 心脏可以访问其他的器官。
一般推荐使用静态内部类。
取自《码出高效JAVA开发手册》
网友评论