0Pricing
Dart Academy · レッスン

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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. extendsとメソッドのオーバーライド
  2. superの呼び出しとコンストラクターチェーン
  3. withキーワードによるMixin
  4. on制約とMixinの順序
← Dart Academyに戻る