[英]Dart: inheritance and super constructor
我的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
...
這是因為SigninView尚未實現AbstractView的所有成員。 與你的問題相同的情況: Dart繼承和超級構造函數
您沒有擴展AbstractView,而是實現它。 這意味着您必須為AbstractPresenter presenter
者實現getter / setter。 如果僅實現該類,則不會繼承屬性。
從Dart語言規范 :
類不會從其超接口繼承成員。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.