我的Dart应用程序具有以下类层次结构:
abstract class AbstractPresenter {
AbstractView view;
AbstractPresenter(this.view);
void start(EventBus eventBus) {
view.presenter = this;
querySelector("body").innerHTML = view.render();
}
}
abstract class SigninPresenter implements AbstractPresenter {
void onSignin(MouseEvent mouseEvent);
}
class DefaultSigninPresenter implements SigninPresenter {
// Lots of code
}
abstract class AbstractView {
AbstractPresenter presenter;
AbstractView(this.presenter);
String render();
void bindUI(String html);
}
abstract class SigninView implements AbstractView {
SigninView(AbstractPresenter presenter) : super(presenter);
LabelElement getSigninLabel();
void setSigninLabel(LabelElement signinLabel);
InputElement getEmailTextField();
void setEmailTextField(InputElement emailTextField);
}
class DefaultSigninView implements SigninView {
LabelElement signinLabel;
InputElement emailTextField;
DefaultSigninView(SigninPresenter presenter) : super(presenter);
// Lots of code...
}
我们的想法是定义“观看次数”和“演示者”的层次结构,最终DefaultSigninView
将与DefaultSigninPresenter
相关(双向)。
但我在DefaultSigninView
的构造函数中收到编译器警告,抱怨我打电话给super(presenter)
:
缺少继承的成员'AbstractView.presenter'
为什么不能“看到”我传递的主持人呢?父构造函数(AbstractView
)采用AbstractPresenter
...
答案 0 :(得分:2)
这是因为SigninView尚未实现AbstractView的所有成员。与您的问题相同的情况:Dart inheritance and super constructor
您没有扩展AbstractView,而是实现它。这意味着您必须为AbstractPresenter presenter
实现getter / setter。如果只实现该类,则不会继承属性。
类不会从其超接口继承成员。