インスタンス変数とは

インスタンス変数は、オブジェクト指向プログラミングのデータの一部であり、それが存在するすべてのオブジェクトに固有の値を持っています。 インスタンス変数は、インスタンスメンバー、非静的フィールド、データメンバーとも呼ばれます。 これらはほとんどのオブジェクトの重要な部分であり、オブジェクトが計算に使用する特定のデータを保持しています。

たとえば、AとBという2つのオブジェクトが存在し、オブジェクトAには「blah」というインスタンス変数があり、オブジェクトBにも「blah」というインスタンス変数がある場合、2つの「blah」変数は別個のエンティティです。 各変数は、それをカプセル化するオブジェクトに関連付けられています。 オブジェクトAに関連付けられた変数「blah」のフルネームは「A.blah」であり、オブジェクトBに関連付けられた変数「blah」のフルネームは「B.blah」です。 これらの変数が独自の値を持つことができる場合、それぞれ。 オブジェクトAとBが同じタイプであり、そのタイプの別のオブジェクトCが作成され、オブジェクトCにもインスタンス変数「blah」があり、独自の一意の値を持つことができます。

インスタンス変数は多くの場合、静的変数と混同されますが、この2つは大きく異なります。 特定のタイプのすべてのオブジェクトが独自に持つインスタンス変数とは対照的に、静的変数は1つの値のみを持ち、この値は適切なタイプのすべてのオブジェクトで同じです。 静的変数は多くの場合、クラス変数と呼ばれ、インスタンス変数とは異なります。

それらに割り当てられた可視性プロパティに応じて、インスタンス変数は、特定のオブジェクト内、オブジェクトとそのサブクラス、またはそれが存在するオブジェクトおよび他のオブジェクトに対してのみ表示されます。 パブリック可視性と呼ばれる最終的な可視性は、オブジェクト指向プログラミングのカプセル化の原則に違反しやすいため、インスタンス変数の悪い習慣と見なされることがよくあります。 このタブーにもかかわらず、パブリックインスタンス変数が役立つ場合があります。 たとえば、Javaの多くの標準クラスにはパブリックインスタンス変数があり、プロパティを簡単に変更できる場合があります。

インスタンス変数の可視性も継承に関係します。 1つのクラスが別のクラスを継承する場合、これにより両方のクラスが互いのインスタンス変数にすぐにアクセスできるようにはなりません。 スーパークラスおよびサブクラスのプライベートインスタンス変数はそれらのクラスのみに制限されているため、サブクラスのプライベート変数はスーパークラスから見えません。逆も同様です。 スーパークラスとサブクラスの両方が参照できるインスタンス変数は、スーパークラス内の保護された変数のみです。

他の言語

この記事は参考になりましたか? フィードバックをお寄せいただきありがとうございます フィードバックをお寄せいただきありがとうございます

どのように我々は助けることができます? どのように我々は助けることができます?