2011-10-31 1 views
0

クラスの属性が通常静的であると定義されていない理由を説明してください。クラスのすべての属性が通常静的であると定義されていない理由を説明してください

+3

なぜそれらを静的として定義しますか?静的属性は、すべてのオブジェクトにわたって同じ値を持つ必要があります。その理由は、属性が通常静的ではないという理由です。 – Ankur

答えて

1

フィールドを静的にすると、フィールドはクラスに関連付けられます。それは、いったん初期化されると、フィールドのすべての使用が同じことを見ることを意味します。見てください:

class Test { 
    public final static String test = "test"; 
} 

これはTest.testとして使用されます。 Testで作成されたClassオブジェクトのフィールドと考えることができます。

フィールドを非静的にすると、クラスのインスタンスに関連付けられていることを意味します。

class Test { 
    public String test = "test"; 
} 

...あなたがそうのようにそれを使用したい:あなたはこの持っていたのであれば

Test t = new Test(); 
System.out.println(t.test); 

testフィールドがコンストラクタで初期化されている場合は、たとえば、インスタンスからインスタンスに変えることができますメソッドを介して変更することができます。

1

ほとんどのクラスの目的は、そのクラスのオブジェクトを持ち、そのオブジェクトの状態を保持することであり、非静的フィールドを定義するためです。

1

誰かがクラスの属性が通常静的であると定義されていない理由を説明してください。

これは、JavaでO-Oプログラミングを行うのが難しくなるためです。 Javaはであり、はO-Oプログラミング言語に設計されているため、O-Oパラダイムをハードにすることは意味がありません。


静的でない属性は、何となくあなたにとって迷惑であると私は思っています。そうであれば、O-Oプログラミングの価値/有用性を理解できず、静的属性を使用することの限界と欠点を理解できませんでした。

良いJavaチュートリアルやO-Oプログラミングに関する書籍をJavaで読むことをお勧めします。

関連する問題