No.1ベストアンサー
- 回答日時:
単純な回答としては、親クラスと子クラスでは同じ変数名でも
変数が格納されている場所が違うということです。
class 親クラス {
private(protected?) int a;
public void setA(int);
public int getA();
....
}
class 子クラス pubic 親クラス {
....
}
とした場合(細かい文法の誤りはご容赦を)、
コード内で
class 親クラス A;
A.メンバ関数() {
class 子クラス B(); //コンストラクタ
};
というような場合、親クラスAのインスタンスと子クラスBの
インスタンスが別々に生成されます。子クラスから見たメンバaは、
親クラスのそれとは異なるのです。
解決策のひとつとして、子クラスの定義に以下を追加することですか。
子クラス(親クラス*); //コンストラクタ
private(protected) 親クラス* ap;
子クラスに生成した親クラスへのポインタを持たせる方法です。
親クラスAから
子クラス B(*A); //とし、
B.ap->setA(num);
とするとうまくいくと思います。わかりにくい記述で済みません。
継承すればインスタンスは同じになるのかと思ったのですが
甘かったようで、すみませんでした。
丁寧に説明して下さって有難うございます。
仰って下さった事をまだ理解できないという事は、
相当基礎がなってないようなので
早く理解できるよう勉強し直してきます。
有難う御座いました。
No.2
- 回答日時:
>子クラスから親クラスのメンバ変数を変更するにはどうすれば良いのでしょうか?
結論から言うと今の使い方では出来ません。
たぶんクラスの継承をちゃんと理解されてないんだと思いますが、インスタンスが別の存在である親クラスAと子クラスBの変数は別のメモリ空間に属していますので参照も変更も出来ませんが、子クラスのインスタンス上で親クラスのメンバ関数は子クラスの変更した値を参照することは出来ます。
そもそも子クラスは親のクラスの機能を全て内包しています。なので、親のクラスを呼び出す理由も意味もありませんし、親クラス内から子クラスのインスタンスを作って呼び出すなどエラーは出ないでしょうがオブジェクト志向の流儀に反しています。頭の中で関数とクラスがごっちゃになっているのでは?
実際に何がしたいかによって答えが変わりますが、少なくとも親クラスから子クラスを呼び出すのは止めた方がよいです。
初めてで、継承すればインタンスは同じと思ってしまったのですが違ったのですね。
うまく理解できませんでしたが、とてもよろしくないやり方をやっているのですね。
別の問題に気を取られて軽率に使ってみたのが間違いだったようです。
もっと勉強しなおしてきます。
ご回答ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) pythonのプログラムについての質問です。 1 2023/05/26 10:31
- その他(プログラミング・Web制作) このプログラミングをどう組みますか? Googlecolabでやってるんですが、出来る方お願いします 1 2022/07/13 10:52
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/06 09:28
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/17 18:41
- 学校 中2女子不登校です。中2の5月辺りからクラス替えの変化で1年の頃からのストレスによる頭痛が悪化し、体 2 2022/03/23 17:16
- Excel(エクセル) 別シートに毎回異なるデータをコピーする 7 2022/06/24 09:02
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- PHP アップロード画像数でCSSを分けることに成功したのですが、画像の横に文字を並べることが出来ません。 3 2023/07/28 17:16
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- 友達・仲間 文化祭の準備に行くべきか悩んでいます。 高校生女子です。 私は不登校気味で、終業式にも行けませんでし 6 2022/07/21 13:04
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLです教えてくださいお願いし...
-
オブジェクト指向プログラミン...
-
同一パッケージにあるクラスが...
-
java eclipse 型に解決できません
-
自作のクラスファイルがインポ...
-
コンボボックスのマウスホイー...
-
A・B・Cクラスとは?
-
クラスに尽力するためリーダー...
-
IPアドレスの3バイト目の呼び方
-
3年間同じクラスになる確率
-
VBAもしくはVB6:クラスの中で...
-
配列の重複する値とその個数を...
-
reading listsとはどういう意味...
-
C# リフレクションについて
-
学校でスマホを使った授業があ...
-
代わりの人へのものの頼み方
-
packageとimport の違いって?
-
クラスにアクセスできません。
-
エクセルのデータ振り分け方法...
-
共通で使う関数を集めたクラス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
河合塾のクラス分けについて
-
同じクラスにならない確率を教...
-
3年間同じクラスになる確率
-
「天声人語」をインターネット...
-
グローバルIPとプライベートIP...
-
配列の重複する値とその個数を...
-
java eclipse 型に解決できません
-
同一パッケージにあるクラスが...
-
私はクラスLINEにまだ入れてな...
-
老い先短い ジジィ が ふと 思う...
-
自作のクラスファイルがインポ...
-
どこからも呼ばれていない無意...
-
main()を持つクラスが2つ以上...
-
数学の計算問題。 3年間同じク...
-
クラス見てから 女の子5人 ネタ...
-
javaのコンパイルができません...
-
1 つのヘッダファイルに複数の...
-
重複エラーを解決するには
-
IPアドレスの3バイト目の呼び方
-
packageとimport の違いって?
おすすめ情報