簡體   English   中英

Dart:繼承和超級構造函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM