😽
【Dart】abstractとは?
abstractとは?
abstractは、抽象的なものを示すキーワードです。
Dart (および他の多くのプログラム言語) において、abstractを使用して、具体的な実装がないクラスやメソッドを定義します。
抽象クラス (Abstract Class)
抽象クラスは、自身ではインスタンス化できないクラスを指します。抽象クラスの主な目的は、他のクラスが継承して使用するためのベースとして提供することです。
abstract class Animal {
void speak();
}
上記の例では、Animalクラスはspeakメソッドの具体的な実装を持っていません。
これは、すべての動物が異なる方法で鳴くため、具体的な実装を提供することができないからです。
抽象メソッド (Abstract Method)
抽象メソッドは、宣言のみが存在し、具体的な実装がないメソッドです。
これは通常、抽象クラス内で定義されます。
上記のspeakメソッドは、具体的な実装を持たないため、抽象メソッドとなります。
abstractの使用例
継承を使って、抽象クラスの具体的な実装を提供することができます。
class Dog extends Animal {
void speak() {
print('Woof!');
}
}
class Cat extends Animal {
void speak() {
print('Meow!');
}
}
ここで、DogクラスとCatクラスは、抽象クラスAnimalを継承しています。
そして、それぞれがspeakメソッドの具体的な実装を提供しています。
なぜabstractを使うのか?
-
再利用と整理
: 同じ基本的な特性や動作を共有するクラスを整理し、コードの再利用を促進するためです。 -
拡張性
: 抽象クラスをベースにして、新しいクラスを追加する際の基準として使用できます。 -
契約
: 抽象クラスやメソッドは、それを継承または実装するクラスが必ず実装しなければならない"契約"のようなものです。これにより、一貫性と期待される動作が保証されます。
まとめると、abstractはクラスやメソッドが完全には定義されていないことを示すキーワードです。
これにより、共通の特性や動作を共有するクラスのグループを定義し、それに基づいて具体的なクラスを実装することができます。
Discussion