🗂

Typescript(抽象化クラス)

2023/03/04に公開

抽象クラスは、Typescriptにおいてオブジェクト指向プログラミングの概念の1つで、他のクラスに継承されるために設計されています。抽象クラスは、インスタンスを作成することができないクラスです。

Typescriptの抽象クラスについて、詳しく説明します。

抽象メソッドとは?

抽象メソッドは、抽象クラスに定義されたメソッドで、メソッドの実装を含んでいません。代わりに、抽象クラスを継承するクラスで、そのメソッドを実装する必要があります。

抽象クラスの実装例

以下の例では、抽象クラスを定義し、それを継承するクラスでメソッドを実装します。

abstract class Animal {
    abstract makeSound(): void;
    move(): void {
        console.log("動いた!");
    }
}

class Cat extends Animal {
    makeSound(): void {
        console.log("にゃーん");
    }
}

let cat = new Cat();
cat.makeSound();
cat.move();

上記の例では、Animalという抽象クラスを定義し、makeSoundという抽象メソッドを含んでいます。また、moveという通常のメソッドも含まれています。

次に、Catというクラスを定義し、Animalを継承します。そして、makeSoundメソッドを実装します。
最後に、Catクラスのインスタンスを作成し、makeSoundとmoveメソッドを呼び出しています。

抽象クラスの特徴

抽象クラスには、以下のような特徴があります。

インスタンスを作成することができない。
1つ以上の抽象メソッドを含むことができる。
抽象メソッドは、実装を持たず、継承先のクラスで実装する必要がある。
通常のメソッドを含むことができる。
継承されたクラスで抽象メソッドを実装しなかった場合、そのクラスも抽象クラスとなる。
抽象クラスの使い方
抽象クラスは、以下のような場合に使われます。

他のクラスで共通するメソッドやプロパティを定義する。
継承されたクラスで、必ず実装しなければならないメソッドがある場合に使用する。
インスタンスを作成する必要がないクラスを作成する。
抽象クラスの例
以下は、抽象クラスを使用した例です。Animalクラスは抽象クラスで、makeSoundメソッドが抽象メソッドとなっています。DogとCatクラスは、Animalクラスを継承しており、makeSoundメソッドを実装しています。

abstract class Animal {
  abstract makeSound(): void;
  move(): void {
    console.log("動いた!");
  }
}

class Dog extends Animal {
  makeSound(): void {
    console.log("わんわん");
  }
}

class Cat extends Animal {
  makeSound(): void {
    console.log("にゃーん");
  }
}

let dog = new Dog();
dog.makeSound(); // "わんわん"
dog.move(); // "動いた!"

let cat = new Cat();
cat.makeSound(); // "にゃーん"
cat.move(); // "動いた!"

まとめ

抽象クラスは、他のクラスに継承されるために設計されたクラスで、インスタンスを作成することができません。抽象クラスは、抽象メソッドを含むことができ、そのメソッドは、継承するクラスで実装する必要があります。抽象クラスは、Typescriptでオブジェクト指向プログラミングを実現するための重要な機能であり、他のクラスと共通するメソッドやプロパティを定
抽象クラスは、他のクラスに継承されることを前提としたクラスで、インスタンスを生成することができません。抽象クラスは、以下のような目的で使用されます。

  1. 共通のメソッドやプロパティをまとめることができる。
    複数のクラスで共通のメソッドやプロパティがある場合、それらを抽象クラスにまとめることができます。例えば、動物クラスを抽象クラスとして定義し、その中に動物の名前や年齢、行動などを表すプロパティやメソッドを定義することができます。その後、犬クラスや猫クラスなど、動物クラスを継承するクラスを定義することで、共通のプロパティやメソッドを再利用することができます。

  2. 継承先のクラスで必ず実装しなければならないメソッドを定義することができる。
    抽象クラスには抽象メソッドを定義することができます。抽象メソッドとは、実装が必要でありながら、抽象クラス内では実装を行わないメソッドのことです。継承先のクラスで必ず実装しなければならないメソッドを抽象メソッドとして定義することで、継承先のクラスでの実装漏れを防ぐことができます。

  3. インスタンスを生成する必要のないクラスを定義することができる。
    抽象クラスは、インスタンスを生成することができないため、単なる名前空間として利用することができます。例えば、共通の定数やユーティリティメソッドを定義するクラスを抽象クラスとして定義することができます。

以上のように、抽象クラスは、複数のクラスで共通する処理や必須の処理を定義するために用いられます。特に、継承による再利用や実装漏れの防止など、オブジェクト指向プログラミングにおいて重要な役割を果たします。

Discussion