我正在通过阅读在线Java书籍学习Java,但我发现很难理解“构造函数”。我的问题是如何编写一个构造函数,将类的私有字段设置为接收的值?
我试过这个,但不认为它是正确的:
public Biscuit(String id, String Biscuitname, int numOfBiscuits);
所以,如果我有一个例子“12002 digestive 83”,我需要一个构造函数,将类的私有字段设置为接收到的这些值
希望这是有道理的
答案 0 :(得分:15)
你走了:
public class Biscuit
{
private final String id;
private final String name;
private final int count;
public Biscuit(String id, String name, int count)
{
this.id = id;
this.name = name;
this.count = count;
}
// Other code
}
一些注意事项:
this.foo = foo
。有些人避免对参数和字段使用相同的名称,但我个人没有看到这个问题。final
和private
;字段应该几乎总是私有IMO,并尽可能最终 - 如果你可以使整个类型不可变,那就更好了。 (这导致更具功能性的编程风格,更易于推理和测试。)numOfBiscuits
显然与饼干相关。 所有这些都有意义吗?如果你有问题,可以提出更多问题!
答案 1 :(得分:3)
您的尝试很好,但缺乏实施。 您应该在大括号中用分号分隔属性而不是分号。
答案 2 :(得分:1)
只需在构造函数的主体中设置字段即可。如果构造函数中的参数名称与类中的字段名称相同,那么您需要在类字段名称前加上this.
,以“消除歧义” - 就像我在下面的“id”字段中所做的那样:
class Biscuit {
private String id;
private String biscuitname;
private int numOfBiscuits;
public Biscuit(String id, String name, String num) {
this.id = id;
biscuitname = name;
numOfBiscuits = num;
}
}