2011-07-26 4 views
1
public class Animal { 

    public static void main(String[] args){ 

    } 

    private int levelOfBreathing = 21; 
    public Animal(Integer levelOfBreathing) { 

答えて

3

いいえ、コンストラクタに渡された値がフィールドに割り当てられていません。

編集このように見て動物のコンストラクタ:levelOfBreathingの値が21

編集残ります。

public Animal(Integer levelOfBreathing) { 
    this.levelOfBreathing = levelOfBreathing; 
} 
+0

私はこれをどのように修正することができますに渡すものは何でもlevelOfBreathingを変えるのだろうか? – Doug

1

いいえ、私はそう信じません。私は

public Animal(int levelOfBreathing) { 
    // constructor for the Animal class 
    this.levelOfBreathing = levelOfBreathing; 
    } 
+1

'self'はJavaでは無効です。あなたは' this'を意味すると思います。 –

+0

もちろん、あなたは正しいです。良いキャッチ。 – Patrick87

+0

どこから来たのでしょうか? – Doug

1

、のように、明示的に設定する必要があるだろうと思い、私はあなたの親クラスのためにこれをしたいかもしれないと思う:

public class Animal { 

    private int levelOfBreathing = 21; 

    public Animal(Integer levelOfBreathing) { 
     this.levelOfBreathing = levelOfBreathing; 
    } 
} 

あなたは、コンストラクタのためRuntimeExceptionの代わりAnimalを書いたように見えます何らかの理由で。

this.levelOfBreathingは、同じ名前を持つため、コンストラクタパラメータではなくフィールドを指定することに注意してください。

1

いいえ、それはありません。 levelOfBreathingをコンストラクタのパラメータとして指定すると、levelOfBreathingの値が他の誰かから来ることを認識しています。

このようなものに変更して、これはあなたがコンストラクタ

public Animal(int levelOfBreathing) 
    { 
    //the this keyword refers to an instance of Animal 
    this.levelOfBreathing = levelOfBreathing; 
    } 
+0

と仮定しましたlevelOfBreathingを正しく設定しました。それはプライベートintでなければなりません。 – Doug

+0

これは21に初期化されているように設定しました。しかし、動物オブジェクトを構築するときに 'levelOfBreathing'の別の値を渡すと、その値は上書きされます –

関連する問題