-2

我知道这有效:

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.

4

1 回答 1

5

最肯定的是,这会起作用:您扩展为匿名类的类不需要是抽象的——它可以是任何final类,甚至是接口(在这种情况下,您需要实现它的所有方法)。

此外,当类是非抽象类时,您可以在不覆盖其任何方法的情况下进行子类化。这个特性用在所谓的类型安全枚举模式中,这种模式在将enum类引入 Java 之前就已经很常见了。

于 2014-03-27T14:53:11.910 回答