Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaのクラス変数と静的変数


クラス変数は静的変数とも呼ばれ、キーワード「static」を使用してメソッドの外部で宣言されます。

静的変数は、クラスのすべてのインスタンスに共通する変数です。変数の単一のコピーがすべてのオブジェクト間で共有されます。

public class Demo{
   static int my_count=2;
   public void increment(){
      my_count++;
   }
   public static void main(String args[]){
      Demo obj_1=new Demo();
      Demo obj_2=new Demo();
      obj_1.increment();
      obj_2.increment();
      System.out.println("The count of first object is "+obj_1.my_count);
      System.out.println("The count of second object is "+obj_2.my_count);
   }
}

出力

The count of first object is 4
The count of second object is 4

Demoという名前のクラスは静的変数を定義し、静的変数の値をインクリメントする「increment」という名前の関数を定義します。 main関数はクラスの2つのインスタンスを作成し、incrementfunctionは両方のオブジェクトで呼び出されます。カウントが画面に印刷されます。静的変数がオブジェクト間で共有されていることを示しています。


  1. Javaでの静的バインディングと動的バインディング

    はい!コンパイラは、メソッドの実行に使用するオブジェクトを知っている場合、参照をオブジェクトに静的にバインドできます。たとえば、静的変数、プライベート変数、final変数は静的バインディングを使用しています。一方、オブジェクトの識別が実行時に行われる場合は、動的バインディングが使用されます。メソッドのオーバーライドは動的バインディングの場合です。 一方、メソッドのオーバーロードは静的バインディングの場合です。

  2. Pythonのクラス変数または静的変数?

    クラス内でメソッドの外部で変数を宣言すると、pythonではクラスまたは静的変数として呼び出されます。クラスまたは静的変数はクラスを介して参照できますが、インスタンスを介して直接参照することはできません。 クラス変数または静的変数は、同じ名前の他のメンバー変数とはまったく異なり、競合しません。以下は、クラスまたは静的変数の使用法を示すプログラムです- 例 class Fruits(object): count = 0 def __init__(self, name, count): self.name = name self.count = count Fruits.count = Frui