superの呼び出しとコンストラクターチェーン
構築中に親クラスへアクセスする
「superの呼び出しとコンストラクターチェーン」はCoddyKit上の無料Dart Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDart Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Dart Academyコースには全4レッスンが含まれています。
コンストラクタの実行順序
サブクラスを構築するときは、まず親クラスを準備する必要があります。Dartでは、子クラスの本体が始まる前に親のコンストラクタが実行されることが保証されています。🏗️
superについて
superキーワードは、オブジェクトの親クラス部分を参照します。子クラスの内部から、親のコンストラクタ、メソッド、フィールドにアクセスするために使います。
暗黙のsuper()
何も記述しない場合、Dartが親の引数なしコンストラクタを自動的に呼び出します。この見えないsuper()があるため、親は常に先に初期化されます。
class Animal { Animal() => print('Animal'); }
class Dog extends Animal { Dog(); }superを明示的に呼び出す
親が引数を必要とする場合は、コンストラクタの初期化子リストで、コロンの後にsuper(...)を記述します。値が継承チェーンの上へ渡されます。
class Dog extends Animal {
Dog(String name) : super(name);
}superの記述場所
superの呼び出しは初期化子リストに記述し、コンストラクタ本体には記述しません。本体が実行される時点で、親はすでに完全に構築されています。
Dog(String name, this.breed) : super(name);superパラメーター
現在のDartでは、super.fieldを使って引数を親へ直接渡せます。パラメーターリストの繰り返しの多い定型コードを減らせます。
class Dog extends Animal {
Dog(super.name);
}superでメソッドを呼び出す
オーバーライドしたメソッドの中で、super.method()を使うと親の元のバージョンが実行されます。完全に置き換えるのではなく、動作を拡張できます。
@override
void speak() {
super.speak();
print('extra');
}継承ツリーを上へ連鎖させる
継承が複数の段階に及ぶ場合、各コンストラクタはそれぞれの親を呼び出します。このチェーンが最上位まで到達した後、コンストラクタ本体があなたのクラスに向かって順に実行されます。
初期化子の順序
全体の順序は、まず初期化子リストとsuper、次に親の本体、最後に子の本体です。どの本体も実行される前に、フィールドはfinalとして初期化されます。
親が引数を必要とする場合
親にデフォルトコンストラクタがない場合は、正しい引数を指定してsuperを必ず呼び出す必要があります。省略すると、Dartがコンパイルエラーを報告します。
thisによるリダイレクト
同じクラス内では、コンストラクタから別のコンストラクタをthis(...)で呼び出せます。これは兄弟間の連鎖であり、superで上位へ到達する場合とは異なります。
Point.origin() : this(0, 0);クイックチェック
親のコンストラクタの呼び出しをどこに記述する必要があるか考えてみましょう。
まとめ
superを呼び出して親のコンストラクタとメソッドを実行し、superパラメーターで値を渡し、thisで兄弟コンストラクタへリダイレクトしました。🔗
AI チューターと学ぶ Dart — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 30
- レッスン
- 120
よくある質問
「superの呼び出しとコンストラクターチェーン」レッスンは無料ですか?
はい。「superの呼び出しとコンストラクターチェーン」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Dart Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Dart Academyコースには全4レッスンが含まれています。
「superの呼び出しとコンストラクターチェーン」で何を学びますか?
構築中に親クラスへアクセスする ブラウザで直接実行するハンズオンコードでDart Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Dart Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDart Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「superの呼び出しとコンストラクターチェーン」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDart Academyレッスンでコードを書いて実行できますか?
はい。すべてのDart Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- extendsとメソッドのオーバーライド
- superの呼び出しとコンストラクターチェーン
- withキーワードによるMixin
- on制約とMixinの順序