2017-06-07 10 views
-4

なぜ静的でない文字列変数へのアクセスが機能しません。それをやろうとすると、私のIDEはすでにそれを見つけましたが、実行すると "シンボルを見つけることができません"と表示されます 助けてください、ありがとう。なぜ静的でない文字列変数へのアクセスが機能しないのですか

public class Main 
{ 
    public static void main(String[] args) 
    { 
     testWrong obj = new testWrong(); 
     System.out.println(obj.public_non_static()); //Doesn't Work 


    } 

} 



public class testWrong 
{ 
    public String public_non_static = "It is Public non Static"; 

    public void in_non_static_method() 
    { 
     testWrong obj1 = new testWrong(); 
     obj1.public_non_static(); //Doesn't Work 

    } 

    public static void in_static_method() 
    { 
     testWrong obj2 = new testWrong(); 
     obj2.public_non_static(); //Doesn't Work also 
    } 
} 
+3

なぜ '()'?...... –

+3

なぜなら、それは公開フィールドでありメソッドではないからです。フィールドにアクセスするために間違った構文を使用しています。 –

+0

obj1.public_non_static; () –

答えて

0

あなたはメソッドのようにアクセスしています:public_non_static();

これを代わりに使用します。obj2.public_non_static;

あなたはOOPの新機能なので、パブリックキーワードを使用しないことがベストプラクティスです。プライベートにしてゲッターやセッターを作ってください。

2

あなたはpublic_non_staticという名前の変数を持っていますが、Javaでは動作しません。その名前の方法にアクセスしてみてください。

一方、他のクラスの変数へのアクセスは、最も重要なオブジェクト指向の原則情報隠蔽/カプセル化に違反しているため、直接アクセスしないでください。

同じだけ(のDTO)をオブジェクト愚かデータ転送に使用されるか、または値no(ビジネス)ロジックを持たないオブジェクトされるべきであるゲッター/セッター方法についても同様です。

関連する問題