• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:privateスコープについて)

privateスコープについて

このQ&Aのポイント
  • Javaの初心者がprivateスコープについて質問しています。
  • コードの中で、Fooクラスのインスタンスのフィールドの値を比較する方法について疑問を持っています。
  • privateアクセスができない理由について説明してほしいという質問です。

質問者が選んだベストアンサー

  • ベストアンサー
noname#19197
noname#19197
回答No.2

クラスがテンプレートという意識は誤解です。 クラスは定義です。 どういうプロパティ、メソッドを持っているという情報だけです。 テンプレートという意味とは違います。 各インスタンスの変数は別のスタックに持ってますので考え方としては合っています。 しかし、アクセスできるかどうかはクラスの定義のセキュリティによるものなので、スタックは関係なくクラスの定義に依存します。 別の考え方をすると、インスタンス変数がアクセスできるかどうかを判断するのではなく、定義であるクラスが判断するので、アクセスのスコープについてはインスタンスという考え方は無視できると思います。

re-entry
質問者

お礼

emi2006様へ ご回答ありがとうございました。大変参考になりました。そして、大変勉強になりました。

その他の回答 (1)

noname#19197
noname#19197
回答No.1

privateは、同一クラスからしかアクセスできないので、インスタンスが別であろうと同一クラスなのでアクセスできます。 クラスとインスタンスの区別はついてますでしょうか?

re-entry
質問者

補足

すみません。クラスとインスタンスの区別がついて いないと思いますので、どうか教えてください。 クラスは、テンプレート的な存在であり、 インスタンスは、実体、つまり、メモリ上に存在 するものと認識しております。privateスコープは、 同一クラスからしかアクセスできないとおっしゃって おりましたが、実際にJVMが処理を行っているのは、 メモリ上のインスタンスについてだと思いますので、 privateスコープが同一クラス内であるならば、その クラスのインスタンスの中でのみprivateな変数などが 有効である。と考えてしまいます。ですから、実行中 のインスタンスの中で、クラスは同じでも異なるインスタンスにアクセスすることは、privateの範囲を 超えているような気がしてなりません。 どうかご教授をお願いします。

関連するQ&A