-4

このアクセサー/ミューテーター コンボをダウンさせようとしていますが、問題が発生しています。私はJavaを学んでいますが、これは私にはできないことの1つです。

public class Airport extends mainClass {

public String ID;


//Accessor
public String getID() {return this.ID;}


//Mutator
public void setID(String ID){this.ID = "SAN";}

}

そして、それは以下に示す主要部分を拡張します。

   public class mainClass {
public static void main(String[] args) {
    Airport SanDiego = new Airport();
    System.out.println(SanDiego.getID());
}
}

実行すると、出力は「null」です。メイン フォームから ID を取得して null を返さないようにする方法と、コードをクリーンアップする方法についてのアドバイスをいただければ幸いです。

4

3 に答える 3

2

cacho が言うように、ID に値を割り当てていません。

もう少し完全な説明を提供するために、Java のデフォルトのコンストラクターは nullary コンストラクターです。これは、スーパークラスのコンストラクターを呼び出し、クラスのすべてのフィールドに「空白の」値を割り当てることを意味します (参照は null になり、整数は0など)。

cacho のソリューションは機能しますが、次のようにコンストラクターを定義することもできます。

public class Airport extends mainClass {
//...

//Constructor
public Airport(String ID){this.ID = ID;}
}

さらに、setID は非常に奇妙です。ID は常に「SAN」に設定されます。代わりに、次のようなものが必要だったのではないかと思います。

public void setID(String ID){this.ID = ID;}

そしてもちろん、新しいコンストラクターを使用できるようになりました。

Airport SanDiego = new Airport("SAN");
于 2015-09-09T01:52:17.590 に答える
0

ID に渡された引数を使用してデフォルトのコンストラクターをオーバーロードするか、オブジェクトをインスタンス化した後で setID() を呼び出して、最初に ID プロパティを設定する必要があります。

于 2015-09-09T01:45:47.820 に答える
0

setID( )メソッドをどこでも呼び出していないのはそのためです。

これを試して:

public class mainClass {
    public static void main(String[] args) {
        Airport SanDiego = new Airport();
        SanDiego.setID("this string is not important, since you are setting the value to SAN anyway");
        System.out.println(SanDiego.getID());
    }
}

それはうまくいくはずです。しかし、ここで何を達成しようとしているのか、私にはよくわかりません。

于 2015-09-09T01:41:34.253 に答える