オブジェクト指向 ・ Chapter 8

ポリモーフィズム

記事 ・ 冒頭を無料公開中

三大要素の最後、ポリモーフィズムです。日本語では多態性。「多くの形態を持つ」という意味です。名前はいかめしいですが、実は前の演習(UserとPremiumUser)でもう半分体験しています。この章では、それを「使う側」の視点から捉え直します。

一言でいうと、ポリモーフィズムとは

同じ呼び出し方で、相手によって違う動きになること。

そしてこの性質の真価は、「使う側が、相手が何者かを知らなくてよくなる」ことにあります。

題材: 通知システム

実務的な題材でいきます。アプリからユーザーに通知を送るシステムです。通知手段はメール、チャットツール、SMSの3種類。まず素直にクラスを作ります。

class Notification {
  send(message: string) {
    console.log("通知: " + message);
  }
}

class EmailNotification extends Notification {
  send(message: string) {
    console.log("【メール】件名: お知らせ / 本文: " + message);
  }
}

class ChatNotification extends Notification {
  send(message: string) {
    console.log("【チャット】 " + message + " @channel");
  }
}

class SmsNotification extends Notification {
  send(message: string) {
    console.log("【SMS】" + message + "(70文字まで)");
  }
}

const email = new EmailNotification();
email.send("メンテナンスのお知らせ");

ここまでは復習です(親を継承し、send をオーバーライドする)。

配列に混ぜて、一括で呼ぶ

「登録された全ユーザーに、それぞれの希望する手段で通知を送る」場面を考えます。ユーザーごとに通知手段はバラバラです。forループの中で何が表示されるか、予想してから実行してください。

4行の出力が、それぞれの形式で表示されたはずです。メールはメールの形式で、SMSはSMSの形式で。

このチャプターの続きは受講生限定です

本文の残り、図解・実行できるコードブロック・演習はプラン加入後に読めます。

料金プランを見る