-4

我试图让这个 Accessor/Mutator 组合下来,但我遇到了麻烦。我正在学习java,这是我不能做的一件事。

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 的默认构造函数是一个空构造函数——这意味着它将调用超类的构造函数,然后它将为类的所有字段分配“空白”值(引用变为空,整数变为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 属性,方法是使用为 ID 传入的参数重载默认构造函数,或者在实例化对象后调用 setID()。

于 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 回答