C++における階層的継承の使用方法


階層的継承は、クラス間の親子関係を表現するために使用されます。親クラス(ベースクラス)から派生した子クラス(派生クラス)は、親クラスのメンバ変数やメソッドを継承し、さらに自身の独自のメンバ変数やメソッドを追加することができます。

まず、以下に簡単な階層的継承の例を示します。

#include <iostream>
using namespace std;
// 親クラス
class Animal {
public:
    void eat() {
        cout << "Animalが食事しています。" << endl;
    }
};
// 子クラス1
class Dog : public Animal {
public:
    void bark() {
        cout << "Dogが吠えています。" << endl;
    }
};
// 子クラス2
class Cat : public Animal {
public:
    void meow() {
        cout << "Catが鳴いています。" << endl;
    }
};
int main() {
    Dog dog;
    dog.eat();  // 親クラスのメソッドを呼び出す
    dog.bark(); // 子クラスのメソッドを呼び出す
    Cat cat;
    cat.eat();  // 親クラスのメソッドを呼び出す
    cat.meow(); // 子クラスのメソッドを呼び出す
    return 0;
}

上記の例では、Animalという親クラスからDogCatという2つの子クラスが派生しています。子クラスは親クラスのeat()メソッドを継承し、それぞれの独自のメソッドであるbark()meow()を追加しています。

main()関数では、DogCatのインスタンスを作成し、それぞれのメソッドを呼び出しています。dog.eat()は親クラスのメソッドを呼び出し、dog.bark()は子クラスのメソッドを呼び出しています。

階層的継承を使用することで、コードの再利用性が向上し、プログラムの構造がより柔軟になります。親クラスから派生した複数の子クラスを作成することができ、それぞれの子クラスで必要な機能を追加することができます。

以上が、C++における階層的継承の基本的な使用方法とコード例です。この概念を理解することで、より複雑なプログラムの開発に役立てることができます。