-3

このコードは教科書から入手しました。

 class FirstClass
 {
     int idNo =25;
     public static void print()
     {
         System.out.println("firstclass citizen " + idNo);
     }
 }
 class SecondClass
 {
     int idNo =24;
     public static void print()
     {
         System.out.println("secondclass citizen" + idNo);
     }
 }
 public class People
 {
     //FirstClass female;
     //SecondClass male;
     public static void main(String[] args)
     {
         System.out.println("people from java world");
         FirstClass.print();
         SecondClass.print();
     }
 }

しかし、このコードをコンパイルすると、次のエラーが発生しました

People.java:7: error: non-static variable idNo cannot be referenced from a stati
c context
            System.out.println("firstclass citizen " + idNo);
                                                       ^
People.java:16: error: non-static variable idNo cannot be referenced from a stat
ic context
            System.out.println("secondclass citizen" + idNo);
                                                       ^
2 errors
4

3 に答える 3

2

this現在のオブジェクトを参照します。これを使用して、インスタンスメソッドまたはコンストラクター内から現在のオブジェクトの任意のメンバーを参照できます。ただし、静的コンテキスト(メソッドまたはブロック)で参照を使用することはできませんthis

staticそのクラスのオブジェクトを作成せずにメソッドを呼び出すことができます。したがって、この変数または非静的変数を静的コンテキストで使用すると、コンパイルエラーが発生します。

于 2013-01-11T05:47:27.627 に答える
0

クラスのインスタンスを作成し、メソッドを静的メソッドではなくインスタンスメソッドに変換することをお勧めします。

public class FirstClass {

    private int idNo = 25;        

    public void print() {
        System.out.println("firstclass citizen " + this.idNo);
    }
}

次に、メインメソッドから:

FirstClass fc = new FirstClass();
fc.print();
于 2013-01-11T05:46:54.870 に答える
-1

非静的属性を参照して、これを静的メソッドに使用することはできません。

class FirstClass
{
    static int idNo =25;
    public static void print()
    {
            System.out.println("firstclass citizen " + idNo);
    }
}
class SecondClass
{
    static int idNo =24;
    public static void print()
    {
            System.out.println("secondclass citizen" + idNo);
    }
}
public class People
{
    FirstClass female;
    SecondClass male;
    public static void main(String[] args)
    {
            System.out.println("people from java world");
            FirstClass.print();
            SecondClass.print();
   }
}
于 2013-01-11T05:49:13.990 に答える