【发布时间】:2015-06-02 19:08:27
【问题描述】:
情况如下:
abstract class A {
void doSomething() => print('Do something..');
}
class B implements A {
@override
void doSomething() => print('Do something already..');
}
class C extends A {
}
我有一个抽象类 A。 B 类实现了 A。因此它重写了 doSomething() 方法。 C 类扩展 A。
一切正常,直到我将工厂构造函数添加到 A 类:
abstract class A {
factory A() => new B();
void doSomething() => print('Do something..');
}
这会导致我的 IDE (IntelliJ IDEA) 出现错误:
预期的生成构造函数,但找到了工厂
我的第一个想法是为 C 类创建构造函数,我会为 A 调用工厂构造函数。有可能吗?
我在尝试扩展 Exception 类时遇到了同样的问题。它还有一个工厂构造函数:
abstract class Exception {
factory Exception([var message]) => new _ExceptionImplementation(message);
}
这就是为什么要创建我的自定义异常我必须实现 Exception 类而不是扩展它,这真的让我很困惑。
我还想澄清一个术语问题。 我可以说从B类的角度来看,A是一个接口,所以B是实现接口A。 但是,从C类的角度来看,A是一个抽象类,所以C扩展了抽象类A。这些说法正确吗?
谢谢。
德米特里。
【问题讨论】:
标签: interface dart abstract-class