extendsとメソッドのオーバーライド
親の振る舞いを共有し、特化させる
「extendsとメソッドのオーバーライド」はCoddyKit上の無料Dart Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDart Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Dart Academyコースには全4レッスンが含まれています。
振る舞いを共有する
2つのクラスが振る舞いの大部分を共有している場合、それを1度だけ記述して再利用できます。Dartではこれをinheritanceと呼び、コピー&ペーストを避けられます。🌱
extendsキーワード
クラス名の後にextendsを記述すると継承できます。新しいクラスは子クラスとなり、親クラスのフィールドとメソッドを自動的に受け継ぎます。
class Animal {}
class Dog extends Animal {}親クラスと子クラス
継承元のクラスをsuperclass(親クラス)、新しいクラスをsubclass(子クラス)と呼びます。DogはAnimalですが、すべてのAnimalがDogとは限りません。
継承されたメンバー
子クラスは、親クラスのpublicメソッドを自分のメソッドであるかのようにすぐ使えます。inheritedな振る舞いを1度記述すれば、すべてのサブクラスが利用できます。
class Animal {
void breathe() => print('breathing');
}
class Dog extends Animal {}
// Dog().breathe() works新しい振る舞いの追加
サブクラスは、継承したメソッドに加えて独自のメソッドも追加できます。子クラスはAnimalのまま、親クラスにはなかったextraな機能を持てます。
class Dog extends Animal {
void bark() => print('Woof!');
}メソッドのオーバーライド
親のバージョンが子に適していないことがあります。オーバーライドを使うと、サブクラスで継承したメソッドを独自の実装に置き換えられます。
class Animal {
void speak() => print('...');
}
class Cat extends Animal {
void speak() => print('Meow');
}@override マーカー
置き換えたメソッドの上に@overrideアノテーションを追加します。これにより、親クラスに本当にそのメソッドがあるかをアナライザーに確認させ、タイプミスを早期に検出できます。
class Cat extends Animal {
@override
void speak() => print('Meow');
}同じシグネチャが必要
オーバーライドでは、同じ名前と互換性のあるシグネチャを維持する必要があります。パラメーターや戻り値の型を不用意に変更すると、Dartに拒否されます。
親のバージョンを再利用する
オーバーライドの中でも、superを通じて元の実装を呼び出し、その前後に独自の処理を追加できます。処理を完全に捨てるのではなく、動作を拡張できます。
@override
void speak() {
super.speak();
print('and purrs');
}ポリモーフィズムを実際に使う
子クラスのインスタンスをAnimal型の変数に格納してspeakを呼び出すと、それぞれが独自のバージョンを実行します。これがポリモーフィズムであり、オーバーライドの本当の利点です。
Animal a = Cat();
a.speak(); // Meow単一継承
Dartのクラスが拡張できるスーパークラスは1つだけで、2つにすることはできません。関係のない継承ツリー間で処理を共有する場合は、後でmixinを利用します。
クイックチェック
サブクラスで継承したメソッドを置き換えます。それによって何が起こりますか?
まとめ
extendsを使って親のメンバーを継承し、新しいメソッドを追加し、@overrideで別のメソッドをオーバーライドしました。これがクラス再利用の核心です。🎉
よくある質問
「extendsとメソッドのオーバーライド」レッスンは無料ですか?
はい。「extendsとメソッドのオーバーライド」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Dart Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Dart Academyコースには全4レッスンが含まれています。
「extendsとメソッドのオーバーライド」で何を学びますか?
親の振る舞いを共有し、特化させる ブラウザで直接実行するハンズオンコードでDart Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Dart Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDart Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「extendsとメソッドのオーバーライド」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDart Academyレッスンでコードを書いて実行できますか?
はい。すべてのDart Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- extendsとメソッドのオーバーライド
- superの呼び出しとコンストラクターチェーン
- withキーワードによるMixin
- on制約とMixinの順序