抽象クラスと抽象メソッド
サブクラスが実装すべき内容を定義する
「抽象クラスと抽象メソッド」はCoddyKit上の無料Dart Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDart Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Dart Academyコースには全4レッスンが含まれています。
abstractの意味
抽象クラスは設計図として記述できますが、直接作成することはできません。単独でインスタンス化するのではなく、拡張されるために存在します。
クラスをabstractとして指定する
abstractキーワードをclassの前に追加します。これにより、そのクラスが未完成であり、共有される基底クラスとして使われることをDartに伝えます。
abstract class Shape {
double area();
}抽象メソッドには本体がない
抽象メソッドは名前とシグネチャを宣言しますが、セミコロンで終わり、実際の処理は各サブクラスに任せます。
abstract class Shape {
double area(); // no body
}インスタンス化できない
Shape()と記述しようとするとコンパイルエラーになります。抽象クラスは未完成で、実際の実装を持たないため、Dartは拒否します。
var s = Shape(); // error: abstractサブクラスが空欄を埋める
サブクラスはextendsを使い、すべての抽象メソッドに本体を提供する必要があります。これにより、設計図が利用可能なものになります。
class Circle extends Shape {
final double r;
Circle(this.r);
double area() => 3.14 * r * r;
}具象メソッドも使用できる
抽象クラスには、完全に記述された具象メソッドを含めることもできます。サブクラスはそれらを直接継承し、抽象メソッドだけを実装します。
abstract class Shape {
double area();
void describe() => print('Area is ' + area().toString());
}抽象クラスのフィールド
抽象クラスにはフィールドやコンストラクタも保持できます。サブクラスの作成時に実行されるため、共有状態を基底クラスに置けます。
abstract class Shape {
final String name;
Shape(this.name);
}コンパイラが契約を強制する
サブクラスが抽象メソッドを忘れていると、コードを実行する前にDartがエラーを報告します。契約は自動的にチェックされます。
class Square extends Shape {} // error: area() missing抽象クラスを使う理由
抽象クラスを使うと、多くの型で1つの形状を共有しながら、それぞれが独自の動作を提供することを保証できます。明確な契約を一度設計し、あらゆる場所で再利用できます。
抽象ゲッター
抽象にできるのはメソッドだけではありません。本体のないゲッターも同じように機能し、サブクラスで定義する必要があります。
abstract class Shape {
String get label;
}抽象型の参照を保持する
任意のサブクラスを、抽象クラス型の変数に格納できます。具体的なクラス名を指定せずに、その動作を保証できます。
Shape s = Circle(2);
print(s.area());クイックチェック
抽象クラスについての簡単な質問です。
まとめ
抽象クラスは拡張するための設計図であり、インスタンス化するものではありません。抽象メソッドには本体がなく、具象サブクラスが実装する必要があります。よくできました!🎯
よくある質問
「抽象クラスと抽象メソッド」レッスンは無料ですか?
はい。「抽象クラスと抽象メソッド」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Dart Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Dart Academyコースには全4レッスンが含まれています。
「抽象クラスと抽象メソッド」で何を学びますか?
サブクラスが実装すべき内容を定義する ブラウザで直接実行するハンズオンコードでDart Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Dart Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDart Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「抽象クラスと抽象メソッド」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDart Academyレッスンでコードを書いて実行できますか?
はい。すべてのDart Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 抽象クラスと抽象メソッド
- 暗黙的インターフェースとimplements
- 共有型によるポリモーフィズム
- 継承よりコンポジション