🌻天国にいけるC++言語入門🌻 進化し続けるオブジェクト指向プログラミング ver3.2307
親クラスのメンバ変数宣言のアクセス指定子がprivateに設定されている場合 親クラスのメンバ変数宣言は子クラスに引き継がれず子クラスのメンバ関数内で親クラスのメンバ変数を用いることはできません
親クラスのメンバ変数宣言のアクセス指定子がprivateに設定されている場合 親クラスのメンバ変数宣言は子クラスに引き継がれず子クラスのメンバ関数内で親クラスのメンバ変数を用いることはできません
ソーラー「今日はクラスの継承に関して
🌞🌞🌞とても🌞🌞🌞
基本的なことを学んでみようと思うんだ
」
マックス「とても基本的なこと?
なんだ~❔(*´▽`*) そんなのがあるのか」
ソーラー「それは
親クラスから子クラスへクラスの継承を行うと
親クラスのメンバ変数宣言
親クラスのメンバ関数宣言
のアクセス指定子が
publicに設定されている場合
親クラスのメンバ変数宣言、メンバ関数宣言は子クラスに引き継がれることになりますが
親クラスのメンバ変数宣言
親クラスのメンバ関数宣言
のアクセス指定子が
privateに設定されている場合
親クラスのメンバ変数宣言、メンバ関数宣言は子クラスに引き継がれない
というものなんです」
マックス「は?
いまいち意味がよくわから~ん」
ソーラー「では
そのことを説明するために
親クラスとなる
GameCharacterのクラス宣言と
GameCharacterのメンバ関数statusDataDisplay() の定義を
を以下のように設定してみます
👇
//👇🌞🌞🌞クラスGameCharacterです🌞🌞🌞
class GameCharacter {
public://🌞アクセス指定子はpublicになっています
string name;
int HP;
int MP;
void statusDataDisplay();
};
void GameCharacter::statusDataDisplay() {
cout << name << "\n";
cout << "HP " << HP << "\n";
cout << "MP " << MP << "\n";
}
👇
次に
親クラスGameCharacterを継承した
子クラスDragonのクラス宣言と
子クラスDragonのメンバ関数DragonstatusDataDisplay()の定義を
次のように設定してみます
//👇🌞🌞🌞クラスGameCharacterを継承したクラスDragonです🌞🌞🌞
class Dragon:public GameCharacter {
public:
int DP;//👈ドラゴン型のキャラクターだけに備わっているドラゴンポイントです
void DragonstatusDataDisplay();
};
//👇🌞🌞🌞Dragon型のキャラクターのステータスデータを表示するためのクラスDragonのメンバ関数DragonstatusDataDisplay()の定義です🌞🌞🌞
void Dragon::DragonstatusDataDisplay() {
cout << name << "\n";
cout << "HP " << HP << "\n";
cout << "MP " << MP << "\n";
cout << "DP " << DP << "\n";
}
ソーラー「このとき
親クラスGameCharacterのメンバ変数宣言
string name;
int HP;
int MP;
親クラスGameCharacterのメンバ関数宣言
void statusDataDisplay();
のアクセス指定子は
publicですね
このとき
親クラスGameCharacterのメンバ変数宣言、メンバ関数宣言は子クラスDragonに引き継がれることになります
つまり
子クラスDragonのクラス宣言内には
親クラスGameCharacterのメンバ変数宣言
string name;
int HP;
int MP;
親クラスGameCharacterのメンバ関数宣言
void statusDataDisplay();
が記述されているのと等しい状態になっています」
マックス「まあ(*^。^*)当たり前のことなんじゃないか~」
ソーラー「次に
親クラスGameCharacterのメンバ変数宣言
string name;
int HP;
int MP;
親クラスGameCharacterのメンバ関数宣言
void statusDataDisplay();
のアクセス指定子を
publicでなく
privateに設定してみます
そのときの
親クラス
GameCharacterのクラス宣言と
GameCharacterのメンバ関数statusDataDisplay() の定義は以下のようになります
👇
//👇🌞🌞🌞クラスGameCharacterです🌞🌞🌞
class GameCharacter {
private://👈ここに注目🌞publicからprivateに変更されました
string name;
int HP;
int MP;
void statusDataDisplay();
};
void GameCharacter::statusDataDisplay() {
cout << name << "\n";
cout << "HP " << HP << "\n";
cout << "MP " << MP << "\n";
}
👇
次に
親クラスGameCharacterを継承した
子クラスDragonのクラス宣言と
子クラスDragonのメンバ関数DragonstatusDataDisplay()の定義を
次のように設定してみます
先程と全く同じです
//👇🌞🌞🌞クラスGameCharacterを継承したクラスDragonです🌞🌞🌞
class Dragon:public GameCharacter {
public:
int DP;//👈ドラゴン型のキャラクターだけに備わっているドラゴンポイントです
void DragonstatusDataDisplay();
};
//👇🌞🌞🌞Dragon型のキャラクターのステータスデータを表示するためのクラスDragonのメンバ関数DragonstatusDataDisplay()の定義です🌞🌞🌞
void Dragon::DragonstatusDataDisplay() {
cout << name << "\n";
cout << "HP " << HP << "\n";
cout << "MP " << MP << "\n";
cout << "DP " << DP << "\n";
}
ソーラー「このとき
親クラスGameCharacterのメンバ変数宣言
string name;
int HP;
int MP;
親クラスGameCharacterのメンバ関数宣言
void statusDataDisplay();
のアクセス指定子は
publicからprivateに変更されましたので
親クラスGameCharacterのメンバ変数宣言、メンバ関数宣言は子クラスDragonに引き継がれないことになります
つまり
子クラスDragonのクラス宣言内には
親クラスGameCharacterのメンバ変数宣言
string name;
int HP;
int MP;
親クラスGameCharacterのメンバ関数宣言
void statusDataDisplay();
は記述されていないのと等しい状態になっています」
マックス「ううん
う~ん
まあ・・・なんというか
そういうものか
普通なんじゃないか
親クラスGameCharacterのメンバ変数宣言
string name;
int HP;
int MP;
親クラスGameCharacterのメンバ関数宣言
void statusDataDisplay();
のアクセス指定子が
privateの場合
親クラスGameCharacterのメンバ変数宣言、メンバ関数宣言は子クラスDragonのクラス宣言内に引き継がれない
つまり
子クラスDragonのクラス宣言内には
親クラスGameCharacterのメンバ変数宣言
string name;
int HP;
int MP;
親クラスGameCharacterのメンバ関数宣言
void statusDataDisplay();
が記述されていないのと等しい状態になる
アクセス指定子を
publicに指定した場合と
privateに設定した場合の
ちがいというわけだ」
ソーラー「そうなんです
ここで
親クラスGameCharacterのメンバ変数宣言
string name;
int HP;
int MP;
親クラスGameCharacterのメンバ関数宣言
void statusDataDisplay();
が
子クラスDragonのクラス宣言内に引き継がれるということは
どういうことなのかを考察してみようよ」
マックス「はい???
??????
親クラスGameCharacterのメンバ変数宣言
string name;
int HP;
int MP;
親クラスGameCharacterのメンバ関数宣言
void statusDataDisplay();
が
子クラスDragonのクラス宣言内に引き継がれるということはどういうことなのか?
か?
???
ど~いうことぉ?」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます