2016-03-21 29 views
1
public class Car { 

    static int model = 2005; 
    static String name = "corvert"; 
    private String color; 

    public String getColor() { 
     return color; 
    } 

    public void setColor(String color) { 
     this.color = color; 
    } 

    static void show() { 
     System.out.println("model" + amodel + "name" + name + "color" + this.color); 

    } 
} 

このメソッドは静的コンテキストから参照できないエラー非静的変数では機能しません。静的メソッドで静的メソッドと非静的メソッドにアクセスする方法

+5

はまあ違う車が異なる色を持つことができますが、静的メソッドでは、あなたがいずれかの車のコンテキストでないなら、あなたは* *それが印刷した色を期待しますことを考えると? (私の推測では、今は '静的'の意味を改訂するのが良い時期になると思います。うまくいけばもっと明らかになります) –

+0

モデルと名前を静的でないものに変更することを検討したいと考えています。静的なままにしておきたいのであれば、なぜ非静的な色にするのですか? –

+0

すべての車は崩壊していますか? –

答えて

0

あなたは、すべてのpublic staticメソッドにアクセスすることができますが、クラス

0

のインスタンスを経由して静的メソッドで非静的メソッドにアクセスするには、唯一のこと、私はすべてが静的(またはコンストラクタを持つローカル作るのいずれかを示唆しています)。それは地元行うとき

コンストラクタは次のようになります。

private int model; 
private String name, color; 
public Car(int model, String name, String color) { 
    this.model = model; 
    this.name = name; 
    this.color = color; 
} 

// setters and getters 

public void show() { 
    System.out.println("model" + amodel + "name" + name + "color" + this.color); 
} 

今、あなたは、静的および非静的アクセスを心配する必要はありCar car = new Car(2005, "Corvet", "Blue");を使用し、car.show()とすることはできません。

0

Jon Skeet氏のコメントによると、あなたのメソッドが静的であることは望ましくないかもしれません。つまり、クラスのすべてのメンバーに対して1つのメソッドがあります。

あなたは、静的メソッドを使用する必要性を感じた場合、あなたはそれを渡すことができます:あなたは、クラス名でアクセスする必要がありstatic void show(String color)

0

static変数

static void show() { 
    System.out.println("model" + amodel + "name" + name + "color" + Car.color); 

} 
0

あなたは静的にCarオブジェクトを渡すことを検討することができます新しいインスタンスを作成するのではなく、新しいインスタンスを作成します。 「規則」は、静的メソッドはインスタンス変数とメソッドにアクセスできませんが、外部オブジェクトを受け取り、それらを使用して遊ぶことができます。

static void show(Car car) { 
     System.out.println("model" + model + "name" + name + "color" + car.color); 

    } 
} 
関連する問題