内部类:(即在类的内部定义另一个类)
例如:在类Outer的内部再定义一个类Inner,此时Inner就称为内部类,Outer就称为外部类。
1.内部类的定义格式:
public class 外部类{
public class 内部类{
}
}
2.内部类在编译完成后也会产生.class文件,而文件的名称则是“外部类名称$内部类名称.class”
3.使用内部类的原因
例如:心脏属于人身体的一部分,但是心脏不能简单的用属性和方法去表示,因为心脏也有属于自己的属性和方法,所以需要写在人“类”的内部。
4.使用内部类的好处:可以方便的访问外部类的私有属性
缺点:降低了程序的可读性
内部类分为四种:成员内部类、静态内部类、局域内部类、匿名内部类
A.成员内部类
a.成员内部类中不能定义static变量
b.成员内部类持有外部类的引用
外部类.内部类 内部类对象= new 外部类.内部类();
C.局域内部类
a.局域内部类是定义在一个方法中的内嵌类,所以类的作用范围仅限于该方法中,而类生成的对象也只能在该方法中使用。
b.局域内部类不能包含静态成员
c.局域内部类要想访问包含其的方法中的参数,则方法中的参数前必须加上final关键字(JDK<=1.7),JDK1.7之后可以直接访问。
D.匿名内部类
注意:如果一个内部类在整个操作中只使用一次的话,就可以定义为匿名内部类没有名字的内部类,这是java为了方便我们编写程序而设计的一个机制,因为有时候有的内部类只需要创建一个它的对象就可以了,以后再不会用到这个类,这时候使用匿名内部类就比较合适。