😽

【Dart】abstractとは?

2023/11/29に公開

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