静态内部类与非静态内部类的区别:
public class Foo {
public class A{}
public static class B{}
}
public class HelloWorld {
public static void main(String[] args){
Foo f=new Foo();
Foo.A a=f.new A();
Foo.B b=new Foo.B();
}
}
静态内部类可直接创建实例,非静态内部类则依赖于外部类的实例。
非静态内部类有指向外部类的引用。当有同名变量时,使用outClass.this可引用外部类的变量。
为什么使用内部类:
内部类可以继承一个类,也可以实现一个接口,这是多重继承的一种更好的实现方式。
匿名内部类使代码看起来更简洁些。