インスタンス変数

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ

クラスを使用したオブジェクト指向プログラミングは、インスタンス変数クラスで定義された変数(つまり、メンバー変数)であり、クラスのインスタンス化された各オブジェクトには個別のコピーまたはインスタンスがあります。インスタンス変数はクラス変数[1]と類似していますが静的ではありません。インスタンス変数は、クラス内で宣言されているが、コンストラクター、メソッド、またはブロックの外部にある変数です。インスタンス変数は、オブジェクトがインスタンス化されるときに作成され、クラス内のすべてのコンストラクター、メソッド、またはブロックにアクセスできます。インスタンス変数にアクセス修飾子を指定できます。

類似点はありますが、インスタンス変数はクラス変数ではありません。これは、クラス属性(またはクラスプロパティ、フィールド、またはデータメンバー)の一種です。インスタンスメンバーとクラスメンバーの間の同じ二分法は、メソッド(「メンバー関数」)にも当てはまります。クラスには、インスタンスメソッドクラスメソッドの両方が含まれる場合があります

各インスタンス変数は、それが所有するオブジェクトの存続期間中、メモリ内に存在します。[2]

変数は、オブジェクトがそれ自体について知っているプロパティです。オブジェクトのすべてのインスタンスには、値がオブジェクト間で同じであっても、インスタンス変数の独自のコピーがあります。1つのオブジェクトインスタンスは、他のすべてのインスタンスに影響を与えることなく、そのインスタンス変数の値を変更できます。インスタンス変数は、メソッドが静的として宣言されていない限り、クラスのすべてのメソッドで使用できます。[3]

構造体 リクエスト{ 

    static int count1 ; //変数名は重要ではありませintnumber ;   
     

    リクエスト(){ 
        数値=カウント1 ; //インスタンス変数"this->number" ++ count1を変更します; //クラス変数"Request::count1"を変更します}   
         
    

};

intリクエスト:: count1 = 0 ;   

このC++の例では、インスタンス変数Request::numberはクラス変数のコピーであり、構築された各インスタンスには、インクリメントされる前Request::count1の順次値が割り当てられますはインスタンス変数であるため、各オブジェクトには独自の値が含まれています。対照的に、同じ値を持つすべてのインスタンスで使用できるオブジェクトは1つだけです。 count1numberRequestRequest::count1

参照

  1. ^ 「Javaチュートリアル、変数」docs.oracle.comオラクル。2014年10月23日にオリジナルからアーカイブされました2014年10月23日取得
  2. ^ 「Javaチュートリアル、クラスメンバーの理解」docs.oracle.comオラクル。2014年10月11日にオリジナルからアーカイブされました2014年10月23日取得
  3. ^ Matuszek、David。「静的」cis.upenn.eduペンシルバニア大学。2014年10月23日にオリジナルからアーカイブされました2014年10月23日取得