今C#を勉強しているのですが、よくコンストラクタがわかりません。初期化をする、というのは理解できるのですが、オーバーロードの際、
int get;
string get2;
Person(int a ) ?
{
get=a;
get2="ああ"
}
Person(int b,string a) ?
{
get=b;
get2=a
}
show()
{
Console.WriteLine("{0}{1}"get,get2);
}
メインメソッド
Person p1 = new Person( 1);
Person p2 = new Person(2,"あ");
p1.show();
p2.show();
こうすると出力結果が
1ああ
2あ
になるはずですが、(わかりずらいですが、)自分の中ではnew演算子が呼ばれたときに?が呼ばれて、変数に値が入ります。そして次のnew演算子で?が呼ばれて値が上書きされるので2あ 2あ になると思うのですが。それともp1.show();の時点でもう一回コンストラクタが呼ばれているのでしょうか。要は上書きされるのか、showの時にコンストラクタが呼ばれ、その値で出力されるのか、です。
No.3ベストアンサー
- 回答日時:
p1とp2は、残念ですが別の存在です。
p1がコンストラクタを実行したら、p1のインスタンスにあるそのコンストラクタが実行されて、p1が持っているフィールドが初期化されます。
同様に、p2がコンストラクタを実行したら、p2のインスタンスにあるそのコンストラクタが実行されて、p2が持っているフィールドが初期化されます。
イメージとしては、p1とp2をそれぞれ宣言したとき、Personクラスのコピーがp1、p2のそれぞれに作られていると考えると、分かりやすいかもしれません。
なので、p1で実行した結果はp1のものですし、p2で実行した結果はp2のものになります。
詳しい話は、検索すればいくらでも出てくるので、調べてみると良いでしょう。
No.2
- 回答日時:
> 要は上書きされるのか、showの時にコンストラクタが呼ばれ、その値で出力されるのか、です。
・p1とp2は別物だから、上書きされることは無い。
・show()の時に、コンストラクタは呼び出しているわけではない。
デバッガを使って、インスタンスのアドレスが具体的にどんな値をとってるかをプログラムを動かしながら調べては。
抽象的に考えて分からないときは、手を動かしてみるのが、理解への早道。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- その他(プログラミング・Web制作) Pythonで複数のメソッドをまとめて管理する方法について 1 2023/03/30 00:01
- Java java 引数 戻り値のあるメソッド 3 2023/02/12 06:23
- Ruby No route matches [GET] "/posts/5/destroy" 1 2022/03/24 13:00
- C言語・C++・C# ポインタの型変換、どうやるんでしたっけ? 2 2022/03/28 11:00
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/06 09:28
- その他(プログラミング・Web制作) pythonのグローバル変数 2 2022/11/25 18:02
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
インスタンス参照でアクセスで...
-
複数の変数を宣言する時、同時...
-
private static という変数の修飾
-
変数名の付け方
-
VB.NET getとsetの概念がわかり...
-
変数の参照でエラーが出てしま...
-
C# インスタンスの破棄
-
抽象クラスのインスタンス生成...
-
オブジェクト参照がオブジェク...
-
他のファイルの変数参照
-
クラス型がインスタンス化され...
-
エクセル(複数インスタンス)...
-
C#において、同じインスタンス...
-
VB6.0のクラスで、自分自身のイ...
-
マルチスレッドでのインスタン...
-
文字列を日付に変換でParseExce...
-
String型もしくはint型をIntege...
-
VC#での24ビットbmp形式での保...
-
newしないインスタンス?実体化...
-
生成したインスタンスを削除す...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
変数名の付け方
-
インスタンス参照でアクセスで...
-
複数の変数を宣言する時、同時...
-
private static という変数の修飾
-
VB.NET getとsetの概念がわかり...
-
C#において、同じインスタンス...
-
生成したインスタンスを削除す...
-
C# インスタンスの破棄
-
newしないインスタンス?実体化...
-
SQLを連続発行する時の正しい(?...
-
「インスタンス」の意味をわか...
-
文字列を日付に変換でParseExce...
-
変数の参照でエラーが出てしま...
-
フォームの存在をチェックする方法
-
javaのクラスの作り方、エラー...
-
オブジェクト参照がオブジェク...
-
String a = "a"; と String b =...
-
エクセル(複数インスタンス)...
-
C#「オブジェクト参照が必要で...
-
他のファイルの変数参照
おすすめ情報