2016-05-11 21 views
-4

これが重複しているかどうか教えてください。検索されましたが、スタックオーバフローでこの正確な質問が見つかりませんでした。 は、私たちが異なる値を持つ2つのパブリック静的変数

public class A{ 
     public static String s="Arnab"; 
    } 

public class B{ 
    public static String s="Someone else"; 
    } 



public class C{ 

    public void myMethod(){ 
     System.out.println(s); 
     } 
    } 

があるとは何だろう、クラスCの印刷のMyMethodは()内syso? なぜですか?

UPDATE:おっと申し訳ありません私の悪い.. didntのリアライズは が、私は答えを削除することがしたい:(

+4

コンパイラエラー? –

+0

コンパイルエラー。 's'を使うには、クラス名を使うべきです。また、出力は使用しているクラス名によって異なります。そしてSOPをクラスの中に直接組み込むことはできません。 – jcool

+0

コンパイルエラー。あなたはコードをコンパイルしようとしましたか? –

答えて

1

あなたが取得するコード実行した場合:

error: cannot find symbol 
      System.out.println(s); 

あなたがA.sを使用し、その後、クラスAのsにアクセスしたい場合はsは、クラスCで定義されていないためです。同様にクラスBのsB.sとなる。

例:(class Bs用)

public void myMethod(){ 
     System.out.println(B.s); 
     } 

出力:Someone else

(あなたはclass Bsに割り当てるものは何でもなるだろう)

1
  1. あなたは直接それらの変数にアクセスすることはできませんあなたは意志(としてのような)クラス名を使用していませんでした。

あなたはブロックを使用する必要があります。あなたはクラスで直接文を書くことができません

  • 。あまりにもクラス名を提供する必要がありますまたは関数。

    public class C { 
        public static void main(String...args){ 
         System.out.println(A.s); 
         System.out.println(B.s); 
        } 
    } 
    
  • 0

    私はあなたのポストで多くのミスを見ることができます。

    1)メインメソッドを定義したそのクラスの公開のみを宣言します。

    2)メソッド内に初期化と宣言以外のステートメントを必ず定義してください。

    3)宣言されているクラス以外の静的変数を使用する場合は、必ずクラス名またはオブジェクト名を使用してください。

    4)インスタンス変数(スタティックではない)を使用するためにのみ、クラスのインスタンスを使用できます。

    照会に関して:これらの変数は重複しません。出力は、その変数に使用するクラスによって異なります。

    class A{ 
           public static String s="Arnab"; 
          } 
    
         class B{ 
          public static String s="Someone else"; 
          } 
    
        public class C{ 
          public static void main(String [] ar){ 
           System.out.println(A.s); // gives:Arnab 
    System.out.println(B.s); // gives:Someone Else 
          } 
         } 
    
    関連する問題