创建扩展其他类的内部匿名类

时间:2014-03-27 14:50:50

标签: java abstract anonymous-inner-class

我知道这有效:

class Main{
    public static void main(String[]args){
        AbstractClass object = new AbstractClass(){ ... };
    }
}

它创建了一个隐式扩展AbstractClass类的对象(显然是abstract)。

但是,以下工作也会如此吗?

class Main{
    public static void main(String[]args){
        ConcreteClass object = new ConcreteClass (){ ... };
    }
}

ConcreteClass是一个不是abstract的类。

1 个答案:

答案 0 :(得分:5)

当然,这可行:您扩展到匿名类的类不需要是抽象的 - 它可以是任何final类,甚至是接口(在这种情况下,您需要实现其所有方法)。

此外,当类是非抽象的时,您可以在不重写其任何方法的情况下进行子类化。此功能用于所谓的类型安全枚举模式,这在将enum类引入Java之前很常见。