-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 に答える