Skip to main content

インスタンス変数とは何ですか?

Instance変数は、オブジェクト指向プログラミングのデータの一部であり、それが存在するすべてのオブジェクトに対して独自の値を持つ独自の値を備えています。インスタンス変数は、インスタンスメンバー、非静的フィールド、およびデータメンバーと呼ばれる場合があります。それらはほとんどのオブジェクトの重要な部分であり、オブジェクトが計算に使用する特定のデータを保持します。たとえば、オブジェクトAがBLAHと呼ばれるインスタンス変数とオブジェクトBも存在する場合、2つのオブジェクトAとBが存在する場合。BLAHと呼ばれるインスタンス変数があり、2つのBLAH変数は異なるエンティティです。各変数は、それをカプセル化するオブジェクトに関連付けられています。オブジェクトAに関連付けられた可変BLAHのフルネームはA.Blahであり、オブジェクトBに関連付けられた変数BLAHのフルネームはB.BLAHです。これらの変数が独自の値を持つことができる場合、それぞれ。オブジェクトAとBが同じタイプで、そのタイプの別のオブジェクトが作成され、オブジェクトCが独自の値を持つ可能性のあるインスタンス変数BLAHも持っている場合。静的変数ですが、2つは大幅に異なります。インスタンス変数とは対照的に、特定のタイプのすべてのオブジェクトに独自のオブジェクトがあり、静的変数には1つの値しかありません。この値は、適切なタイプのすべてのオブジェクトで同じです。静的変数は、インスタンス変数と同じではないクラス変数と呼ばれることがよくあります。他のオブジェクトと同様に存在します。パブリックの可視性と呼ばれる最終的な可視性のタイプは、オブジェクト指向プログラミングのカプセル化原則に違反するのが簡単であるため、たとえば変数のために悪い練習と見なされることがよくあります。このタブーにもかかわらず、パブリックインスタンス変数が役立つ場合があります。たとえば、Javaの多くの標準クラスにはパブリックインスタンス変数があり、時にはプロパティを簡単に変更できるようになります。あるクラスが別のクラスから継承した場合、これにより、両方のクラスが相互にインスタンス変数にアクセスすることはすぐにはありません。スーパークラスとサブクラスのプライベートインスタンス変数は、それらのクラスのみに制限されたままであるため、サブクラスのプライベート変数はスーパークラスでは見られず、その逆も同様です。スーパークラスとサブクラスの両方が見ることができる唯一のインスタンス変数は、スーパークラスの保護された変数です。