定义:
在Java中,允许在一个类(方法或是语句块)的内部定义另一个类,成为内部类(inner class)。
使用内部类的原因主要有:
- 内部类可以访问外部类中的数据,包括私有的数据。
- 内部类可以对同一个包中的其他类隐藏起来。
- 定义一个回调函数并不像编写大量代码,使用匿名内部类(anonymous class)比较便捷。
- 减少类命名冲突。
public class Outer{
private int number;
public class Inner{
private int count = 5;
public void book(){
number++;
}
}
public static void main( String[] args){
Outer outer = new Outer();
Inner inner = outer.new Inner();
inner.book();
System.out.println(outer.number);
System.out.println(inner.count);
//编译错误,外部类不能访问内部类的变量
System.out.println(count);
}
}
注:外部引用内部类时必须给出完整的名称。(eg:Inner inner = outer.new Inner())
必须先有外部类的对象才能生成内部类的对象,因为内部类需要访问外部类中的成员变量,成员变量必须实例化才能有意义。