java为什么要用内部类
1. 内部类能访问外围类的所有成员,包括私有成员。
当生成一个内部类对象时,此对象与制造它的外围类对象之间就有了一种联系,所以它能访问其外围类对象的所有成员,而不需要任何特殊的条件。如下面代码所示:
class OutterClass {
private int i = 1;
class InnerClass {
public void displayPrivate() {
System.out.println(i);
}
}
}
public class MainClass{
public static void main(String[] args) {
OutterClass outter = new OutterClass();
OutterClass.InnerClass inner = outter.new InnerClass();
inner.displayPrivate();
}
}
由上面的代码可以看出,内部类能够访问外部类的私有成员变量。在这段代码中,还需要注意的是
①生成内部类对象,必须要先有外围类对象,具体的做法请见代码;
②内部类能访问外围类的私有成员这一点,C++中的嵌套类是没有这个特性的。
2. 内部类与static
①内部类不能含有static方法;
②内部类不能含有static数据成员,除非是static final;
③内部类可以继承含有static成员的类。
3. 匿名内部类
匿名内部类,看起来非常奇怪。因为它太简洁了,但这也带来一个好处,用匿名内部类写出来的代码通常比较简洁啦!