我知道这有效:
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
的类。
答案 0 :(得分:5)
当然,这可行:您扩展到匿名类的类不需要是抽象的 - 它可以是任何非final
类,甚至是接口(在这种情况下,您需要实现其所有方法)。
此外,当类是非抽象的时,您可以在不重写其任何方法的情况下进行子类化。此功能用于所谓的类型安全枚举模式,这在将enum
类引入Java之前很常见。