java内部类总结
简单来说,内部类就是在我们所熟悉的类中的里面再定义一个类
为什么需要内部类?
当我们描述事物时,事物之中还有事物,我们就用内部类描述事物
因为内部事物在使用外部事物的内容
我举一个例子 人体有心脏,血液,肝,脾,肺-……那么心脏该如何定义?
我们应该定义心脏为内部类,因为它在使用外部类(人体)的血液,氧气……
实例1:内部类的基本结构
class Out /*外部类*/ { private int x=3; class In /*内部类*/ { private int y public void show() { System.out.println(x); } } } class Demo { public static void main(String args[]) { Out.In in=new Out().new In(); /*创建内部类对象的格式*/ in.show(); } }
运行结果:3
从上面的例子不难看出,内部类其实严重破坏了良好的代码结构,但为什么还要使用内部类呢?
因为内部类可以随意使用外部类的成员变量(包括私有)而不用生成外部类的对象,这也是内部类的唯一优点
如同心脏可以直接访问身体的血液,而不是通过医生来抽血
程序编译过后会产生两个.class文件,分别是Out.class和Out$In.class
其中$代表了上面程序中Out.In中的那个 .
Out.In in = new Out().new In()可以用来生成内部类的对象,这种方法存在两个小知识点需要注意
1.开头的Out是为了标明需要生成的内部类对象在哪个外部类当中
2.必须先有外部类的对象才能生成内部类的对象,因为内部类的作用就是为了访问外部类中的成员变量
其它的示例请看:http://www.cnblogs.com/nerxious/archive/2013/01/24/2875649.html