C++の継承(Inheritance)とは?クラスを拡張する基本テクニック
C++では、既存のクラスの機能を引き継いで新しいクラスを作ることができます。
この仕組みを「継承(Inheritance)」と呼び、オブジェクト指向プログラミングの重要な柱のひとつです。
この記事では、C++の継承の基本や使い方、メリットを初心者向けにわかりやすく解説します。
継承とは?
継承とは、あるクラス(親クラス、基底クラス)の機能を、新しいクラス(子クラス、派生クラス)で引き継ぐ仕組みです。
これにより、既存のクラスを再利用しながら、新しい機能を追加できます。
基本構文
class 親クラス名 {
// 共通の機能
};
class 子クラス名 : public 親クラス名 {
// 親の機能 + 子の追加機能
};
通常は public
継承を使います。これにより、親クラスの public
メンバが子クラスでもそのまま使えるようになります。
継承の例
#include <iostream>
using namespace std;
// 親クラス
class Animal {
public:
void speak() {
cout << "動物が鳴いています。" << endl;
}
};
// 子クラス(Animalを継承)
class Dog : public Animal {
public:
void bark() {
cout << "ワンワン!" << endl;
}
};
int main() {
Dog myDog;
myDog.speak(); // 親クラスの関数を使用
myDog.bark(); // 子クラス独自の関数
return 0;
}
この例では、Dog
クラスはAnimal
クラスを継承しており、親の関数 speak()
をそのまま使えています。
アクセス修飾子と継承の関係
継承には3種類の方法があります:
public
継承:親の public → 子でも public
protected
継承:親の public → 子では protected
private
継承:親の public → 子では private
通常は、オブジェクト指向の原則に則り public
継承を使います。
継承を使うメリット
- コードの再利用ができる
既存クラスの機能を再利用でき、開発効率がアップします。
- 拡張しやすい構造になる
基本の機能を維持しつつ、新しい機能を追加できます。
- 共通インターフェースが作れる
複数のクラスに共通の機能を持たせる際に便利です。
注意点
- 親クラスのメンバが
private
の場合、子クラスからは直接アクセスできません。
- 親と子で同じ関数名がある場合は、
オーバーライド
やvirtual
を意識する必要があります。
まとめ
C++の継承は、既存のクラスの機能を再利用して新しいクラスを作るための便利な仕組みです。
うまく使えば、コードを簡潔に保ちながら、柔軟な設計が可能になります。
まずは public
継承から試して、親クラスの機能を子クラスでどのように使えるかを実際に体験してみましょう!