【发布时间】:2016-09-04 08:40:25
【问题描述】:
我正在尝试找出是否可以将匿名内部类创建为抽象类。
我认为这没有意义,因为我正在尝试创建抽象类的实例,但是来自编译器的消息让我感到困惑:
“从 Test 派生的匿名类”类必须声明为抽象或在 Test 中实现抽象方法“method()”
代码:
abstract class Test{
abstract void method();
}
Test o = new Test(){};
如果可以将匿名类声明为抽象类,请告诉我该怎么做。
我会很高兴回答。
【问题讨论】:
-
在什么情况下这样做才有意义?
-
你不能声明一个匿名类抽象:根据定义,当你声明一个匿名类时,你正在创建一个新类的实例,这意味着它必须是具体的。
-
@OliverCharlesworth 正如我所提到的,我看不出任何意义,但我正在尝试理解编译器消息。
-
抽象类不能只通过子类直接使用,但你不能有匿名类的子类,因为它没有你可以使用的名称,所以它会是毫无意义。
-
编译器消息只是泛化的产物。编译器在所有情况下都简单地使用相同的文本片段,在这些情况下,继承的抽象方法没有实现。
标签: java abstract-class abstract anonymous-class