「ポリモーフィズム」の編集履歴(バックアップ)一覧はこちら

ポリモーフィズム」(2021/05/20 (木) 13:10:29) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

*ポリモーフィズム **ポリモーフィズム オブジェクト指向の要となる概念のひとつにポリモーフィズム(多態性)があります。 前章の「Person」クラスと「Student」クラスを例にとります。 「Student」クラスは「Person」クラスのサブクラスです。 実は、派生クラスのポインタは基底クラス型に入れることができます。 Person *karasawa = new Student(); 唐澤は学生である前に人間なのです。 しかし、Person型に入れるとStudent型の変数や関数を呼び出すことができなくなります。 karasawa->SelfIntroduction(); // 呼び出し可 karasawa->GetID(); // 呼び出し不可 エラー さらに、以下のような問題があります。 **オーバーライドした関数 「SelfIntroduction」は「Student」クラスでオーバーライドしていますが、 Person型に入れると「Person」クラスの「SelfIntroduction」が実行されてしまいます。 int main(){ // Studentとしてkarasawaを生成 Person *karasawa = new Student("唐沢", 24, 241035); karasawa->SelfIntroduction() // 自己紹介(Personのものが実行される) delete karasawa; return 0; } この問題を解決方は次の章で解説します。
*ポリモーフィズム **ポリモーフィズム オブジェクト指向の要となる概念のひとつにポリモーフィズム(多態性)があります。 前章の「Person」クラスと「Student」クラスを例にとります。 「Student」クラスは「Person」クラスのサブクラスです。 実は、派生クラスのポインタは基底クラス型に入れることができます。 Person *satou = new Student(); 佐藤は学生である前に人間なのです。 しかし、Person型に入れるとStudent型の変数や関数を呼び出すことができなくなります。 satou->SelfIntroduction(); // 呼び出し可 satou->GetID(); // 呼び出し不可 エラー さらに、以下のような問題があります。 **オーバーライドした関数 「SelfIntroduction」は「Student」クラスでオーバーライドしていますが、 Person型に入れると「Person」クラスの「SelfIntroduction」が実行されてしまいます。 int main(){ // Studentとしてsatouを生成 Person *satou = new Student("佐藤", 24, 241035); satou->SelfIntroduction() // 自己紹介(Personのものが実行される) delete satou; return 0; } この問題を解決方は次の章で解説します。

表示オプション

横に並べて表示:
変化行の前後のみ表示:
目安箱バナー