抽象类的内部类
由于抽象类是不能被实例化的,所以静态内部类可以通过new 外部类.内部类()来创建内部类的实例。而非静态的内部类则无法被实例化。
public abstract class Demo {
public abstract void demo();
static class A {
public void a(){
System.out.println("a");
}
}
class B {
public void b(){
System.out.println("b");
}
}
}
class F {
public static void main(String[] args) {
Demo.A a = new Demo.A();
a.a();
// Demo.B b = new Demo.B();
// Demo.B b = new Demo().new B();
}
}
内部抽象类
普通内部类需要先实例化外部类,然后在实例化内部类。抽象内部类也是通过此方法实现,只是需要在实例化的时候重写抽象方法。
class C {
static abstract class D {
public abstract void demoD();
}
class E {
public void e(){
System.out.println("e");
}
}
}
class F {
public static void main(String[] args) {
C.D d = new C.D() {
@Override
public void demoD() {
// TODO Auto-generated method stub
}
};
C.E e = new C().new E();
e.e();
}
}