C++のクラスの継承のサンプルです。
目次
以降は、説明用として3つのファイルがあります。(class1.h、class1.cpp、test1.cpp)
1.基本クラスと派生クラスを定義する (class1.h)
基本クラスと派生クラスを定義しているファイルです。
基本クラスを継承して派生クラスを作成します。
継承元のクラスのことを「基本クラス 」or 「親クラス 」or 「スーパークラス」といいます。
継承先のクラスのことを「派生クラス」 or「 子クラス」 or「 サブクラス」といいます。
| No. | 説明 |
|---|---|
| 1 | 4行目は、基本クラス「Class1」を定義しています。 |
| 2 | 14行目は、派生クラス「Class2」を定義しています。 「class Class2」の後に「 : public Class1」と記述することにより、Class2は、Class1を継承します。 |
#include <string>
using namespace std;
// No.1
class Class1
{
private:
string name1;
public:
void print1();
};
// No.2
class Class2 : public Class1
{
private:
string name2;
public:
void print2();
};
2.メンバ関数を実装する (class1.cpp)
メンバ関数を実装しているファイルです。
メンバ関数とはJavaでいうメソッドにあたります。
| No. | 説明 |
|---|---|
| 1 | 5-11行目は、クラス「Class1」のメンバ関数です。 class1.hの10行目のprint1の内容を記述しています。 |
| 2 | 13-19行目は、クラス「Class2」のメンバ関数です。 class1.hの20行目のprint2の内容を記述しています。 |
#include "Class1.h"
#include <iostream>
using namespace std;
// No.1
void Class1::print1()
{
name1 = "クラス1";
cout << name1 << "のメンバ関数です\n";
return;
}
// No.2
void Class2::print2()
{
name2 = "クラス2";
cout << name2 << "のメンバ関数です\n";
return;
}
3.派生クラスを使用する (test1.cpp)
派生クラスを使用しているファイルです。
| 場所 | 説明 |
|---|---|
| 1 | 8行目は、派生クラス「Class2」のオブジェクトを生成しています。 (Class2型のcla2というオブジェクトを生成) |
| 2 | 10行目は、派生クラスのオブジェクト「cla2」が基本クラス「Class1」のメンバ関数「print1」を呼び出しています。 Class2は、Class1を継承しているため呼び出し可能です。 |
#include "Class1.h"
int main() {
Class1 cla1;
cla1.print1();
// No.1
Class2 cla2;
// No.2
cla2.print1(); //Class1のメンバ関数を呼び出せる
cla2.print2();
return 0;
}
結果
実行すると以下のように表示されます。
クラス1のメンバ関数です
クラス1のメンバ関数です
クラス2のメンバ関数です
関連の記事