🌻天国にいけるC++言語入門🌻 進化し続けるオブジェクト指向プログラミング ver3.2307
親クラスのクラス宣言内でアクセス指定子がpublicに設定された親クラスのメンバ変数、メンバ関数をアクセス指定子publicを使って子クラスへ継承してみます
親クラスのクラス宣言内でアクセス指定子がpublicに設定された親クラスのメンバ変数、メンバ関数をアクセス指定子publicを使って子クラスへ継承してみます
ソーラー「
親クラスGameCharacterのクラス宣言と
親クラスGameCharacterのメンバ関数statusDataDisplay()
の定義を以下のように設定します
//👇🌞🌞🌞親クラスGameCharacterです🌞🌞🌞
class GameCharacter {
public:
string name;
int HP;
int MP;
void statusDataDisplay();
//クラスGameCharacterにはDragon型のキャラクターだけが使用できるuseFireRecovery(GameCharacter& a)を設定しません
};
void GameCharacter::statusDataDisplay() {
cout << name << "\n";
cout << "HP " << HP << "\n";
cout << "MP " << MP << "\n";
}
とします
そして
子クラスDragonのクラス宣言と
子クラスDragonのメンバ関数statusDataDisplay()
の定義を以下のように設定します
//👇🌞🌞🌞クラスGameCharacterを継承した子クラスDragonのクラス宣言です🌞🌞🌞
class Dragon:public GameCharacter {
public:
void useFireRecovery(GameCharacter& a);
};
void Dragon::useFireRecovery(GameCharacter& a) {
cout << name << "は灼熱のフレアを" << a.name << "に吐いた !" << "\n";
cout << a.name << "は灼熱のフレアを受け燃え上がった!" << "\n";
a.HP += 10;
cout << a.name << "の体力は10回復した" << "\n";
}
としてみます
このとき
親クラスGameCharacterのメンバ変数宣言
string name;
int HP;
int MP;
親クラスGameCharacterのメンバ関数宣言
void statusDataDisplay();
のアクセス指定子は
publicに指定されています。
この状態で
親クラスGameCharacterから
子クラスDragon
へ
クラスの継承が行ってみたいと思います
この親クラスGameCharacter
と
親クラスGameCharacterを継承した子クラスDragon
が
用いられたプログラムをご覧ください」
👇
#include <iostream>
#include <string>//文字列を取り扱うためにヘッダファイル <string>をインクルードしています
using namespace std;
//👇🌞🌞🌞クラスGameCharacterです🌞🌞🌞
class GameCharacter {
public:
string name;
int HP;
int MP;
void statusDataDisplay();
//クラスGameCharacterにはuseFireRecovery(GameCharacter& a)を設定しません
};
void GameCharacter::statusDataDisplay() {
cout << name << "\n";
cout << "HP " << HP << "\n";
cout << "MP " << MP << "\n";
}
//👇🌞🌞🌞クラスGameCharacterを継承した子クラスDragonのクラス宣言です🌞🌞🌞
class Dragon:public GameCharacter {
public:
void useFireRecovery(GameCharacter& a);
};
void Dragon::useFireRecovery(GameCharacter& a) {
cout << name << "は灼熱のフレアを" << a.name << "に吐いた !" << "\n";
cout << a.name << "は灼熱のフレアを受け燃え上がった!" << "\n";
a.HP += 10;
cout << a.name << "の体力は10回復した" << "\n";
}
int main() {
GameCharacter Lyliane;
Lyliane.name = "リリアーネ";
Lyliane.HP = 10;
Lyliane.MP = 8;
Dragon Pokky;
Pokky.name = "ポッキー";
Pokky.HP = 15;
Pokky.MP = 5;
Lyliane.statusDataDisplay();
Pokky.statusDataDisplay();
Pokky.useFireRecovery(Lyliane);
Lyliane.statusDataDisplay();
Pokky.statusDataDisplay();
return 0;
}
ビルド実行結果
リリアーネ
HP 10
MP 8
ポッキー
HP 15
MP 5
ポッキーは灼熱のフレアをリリアーネに吐いた!
リリアーネは灼熱のフレアを受け燃え上がった!
リリアーネの体力は10回復した
リリアーネ
HP 20
MP 8
ポッキー
HP 15
MP 5
ソーラー「いつも通りの結果ですね
このとき
親クラスGameCharacterのメンバ変数宣言
string name;
int HP;
int MP;
親クラスGameCharacterのメンバ関数宣言
void statusDataDisplay();
のアクセス指定子は
publicに設定されており
子クラスDragonのクラス宣言では
class Dragon:public GameCharacter
のように
アクセス指定子
public
が用いられています
この場合
親クラスGameCharacterのメンバ変数宣言
string name;
int HP;
int MP;
親クラスGameCharacterのメンバ関数宣言
void statusDataDisplay();
は
子クラスDragonのクラス宣言内に引き継がれることになります
(注意
class Dragon:public GameCharacter
でも
class Dragon:private GameCharacter
でも
class Dragon:protected GameCharacter
でも
親クラスGameCharacterのメンバ変数宣言
string name;
int HP;
int MP;
親クラスGameCharacterのメンバ関数宣言
void statusDataDisplay();
は
子クラスDragonのクラス宣言内に引き継がれることになります)
アクセス指定子がpublicに設定された
親クラスGameCharacterの
メンバ変数宣言
string name;
int HP;
int MP;
メンバ関数宣言
void statusDataDisplay();
を
class Dragon:public GameCharacter
のように
🌞アクセス指定子public🌞
を用いて
クラスの継承を行った場合
Pokkyの子クラスDragon型のオブジェクト宣言
Dragon Pokky;
を実行して
子クラスDragon型のオブジェクトPokkyを作製した場合
子クラスDragon型のオブジェクトPokkyのメンバ変数
Pokky.name
Pokky.HP
Pokky.MP
子クラスDragon型のオブジェクトPokkyのメンバ関数
Pokky.statusDataDisplay()
が生成されることになります
ですので
子クラスDragon型のオブジェクトPokkyのメンバ変数
Pokky.name
Pokky.HP
Pokky.MP
子クラスDragon型のオブジェクトPokkyのメンバ関数
Pokky.statusDataDisplay()
を用いた
Dragon Pokky;
Pokky.name = "ポッキー";
Pokky.HP = 15;
Pokky.MP = 5;
Pokky.statusDataDisplay();
を
実行することができます
今度は
親クラスGameCharacterのメンバ変数宣言
string name;
int HP;
int MP;
親クラスGameCharacterのメンバ関数宣言
void statusDataDisplay();
のアクセス指定子はpublicのまま
class Dragon:private GameCharacter
のように
アクセス指定子
private
を用いてクラスの継承をおこなってみようよ」
マックス「今まで
アクセス指定子publicを使って
クラスの継承をおこなってきたが
今度は
アクセス指定子
private
か・・・
なんとな~く
クラスの継承が行われなくなるよ~な気がするな~」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます