クラス変数

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

クラスを使用したオブジェクト指向プログラミングは、クラス変数 は、クラスのインスタンスの数に関係なく、単一のコピーが存在するクラスで定義された変数です。[1] [2] [3] [4] [5]

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

静的メンバー変数と静的メンバー関数

一部の言語では、クラス変数とクラスメソッドは、動的ディスパッチを介さずに静的に解決されるか、コンパイル時に静的に割り当てられたメモリ(静的変数としてクラス全体に1回)であり、実行時に動的に割り当てられません(オブジェクト)。ただし、他の場合では、これらのいずれかまたは両方が動的です。たとえば、クラスを(実行時に)動的に定義できる場合、これらのクラスのクラス変数は、クラスが定義されるときに動的に割り当てられ、一部の言語では、クラスメソッドも動的にディスパッチされます。

したがって、一部の言語では、静的メンバー変数または静的メンバー関数が「クラス変数」または「クラス関数」と同義で、またはその代わりに使用されますが、これらは言語間で同義ではありません。これらの用語は、JavaC# [5] 、およびC ++で一般的に使用され、クラス変数とクラスメソッドはstaticキーワードで宣言され、静的メンバー変数または静的メンバー関数と呼ばれます

構造体 リクエスト{ 

    static int count ;  
    int番号; 

    Requestobject (){ 
        =カウント; //インスタンス変数「this->number」を変更します   
        ++カウント; //クラス変数"Request::count"を変更します 
    }

};

intリクエスト::カウント= 0 ;   

このC++の例では、コンストラクターを呼び出すたびにクラス変数Request::countインクリメントされるため、構築されたRequestの数が常に保持され、新しい各Requestオブジェクトが順番に指定されます。はクラス変数であるため、オブジェクトは1つだけです対照的に、各Requestオブジェクトには独自のフィールドが含まれています。 Request::countnumbercountRequest::countnumber

また、変数は1回だけ初期化されることに注意してくださいRequest::count

メモ

  1. ^ 「Javaチュートリアル、変数」2010年10月21日取得
  2. ^ 「Javaチュートリアル、インスタンスおよびクラスメンバーの理解」2010年10月21日取得
  3. ^ 「Python言語リファレンス、複合ステートメント」2010年10月21日取得
  4. ^ 「Objective-Cランタイムリファレンス」AppleDeveloper 2018年4月1日取得
  5. ^ a b "C#のクラス変数"Syntaxdb 2018年4月1日取得