4

わかりましたので、基本的に私は3つのクラスを持っています:

  • メインクラス
  • Apple(2 つのコンストラクター)
  • パイ

メインクラスで私は:

Apple apple = new Apple(String one, String two);

次に、Apple クラスはそれらをグローバルに設定します。

public Apple()
{
    //empty constructor
}
public Apple(String one, String two)
{
    this.one = one;
    this.two = two;
}

次に、 Pie クラスで次のことを行います。

Apple apple = new Apple();

次に、Pie クラスから変数 'one' または 'two' にアクセスしようとすると、null が返されます。誰かが私を助けることができますか?

4

3 に答える 3

10

2 つの異なるオブジェクトを作成しています。すべての Apple オブジェクトに同じパラメーターを持たせたい場合は、それらを として宣言しますstatic。それ以外の場合、動作は正しいです。

より具体的にはapple、メイン クラスで作成する は、そのパラメータに必要な値を持ちます。クラスappleで作成される2 番目の は (別のオブジェクト、つまり Apple クラスの別のインスタンスです)、パラメーターなしで構築されるため、デフォルトのコンストラクター(つまり) が呼び出され、値は null を返します。Piepublic Apple()

staticaと変数の違いを確認するにnon-staticは、次のようにします。

class Apple {
    int var;
}

Apple apple1 = new Apple();
apple1.var = 10;
Apple apple2 = new Apple();
apple2.var = 5;
System.out.println(apple1.var+"\t"+apple2.var);

版画:

10     5

しかし、もしそうなら、staticあなたは得るでしょう

class Apple {
    static int var;
}

Apple apple1 = new Apple();
apple1.var = 10;
Apple apple2 = new Apple();
apple2.var = 5;
System.out.println(apple1.var+"\t"+apple2.var);

出力は次のようになります。

5     5

staticを使用するかどうかの詳細については、以下をご覧ください。

Java: 静的メソッドを使用する場合

于 2013-02-06T20:02:09.187 に答える
1

デフォルトのコンストラクターの場合、1つまたは2つをnullにしないようにするには、Appleインスタンスにいくつかのデフォルトのnull以外の値を設定する必要があります。

class Apple {
    public Apple()
    {
        this("1", "2");
    }
    public Apple(String one, String two)
    {
        this.one = one;
        this.two = two;
    }
    //...
}
于 2013-02-06T20:04:41.190 に答える
0

したがって、クラスAppleに属するものは、で作成したものとは異なるAppleです。したがって、空のコンストラクターを呼び出し、それらがメインにある間、パイに設定されていない場合。それらを本当に同じにしたい場合は、Pieのmainを参照するか、静的にします。PieMainonetwoAppleAppleAppleApple

于 2013-02-06T20:05:04.037 に答える