对Java中的参数和构造函数感到困惑
所以基本上,我有一个任务,我有很多不同的事情要做。我被困在这一部分,我必须创建三个不同的构造函数,它们采用不同的参数 参数:对Java中的参数和构造函数感到困惑,java,parameters,constructor,Java,Parameters,Constructor,所以基本上,我有一个任务,我有很多不同的事情要做。我被困在这一部分,我必须创建三个不同的构造函数,它们采用不同的参数 参数: 获取所有4个字段的参数-我想我在下面的构造函数中做了 地址行1-3和邮政编码的一个参数 地址行1和2以及邮政编码的参数 我尝试过用不同的参数创建不同的构造函数,但它不起作用,因此对此有任何见解都将不胜感激 class Address{ private String addressLine1; private String addressLine2;
class Address{
private String addressLine1;
private String addressLine2;
private String addressLine3;
private String addressLine4;
private String postcode;
public Address(String allFields){
this.addressLine1 = allFields;
this.addressLine2 = allFields;
this.addressLine3 = allFields;
this.addressLine4 = allFields;
}
}
编辑:这是关于这个练习阶段的原始问题
根据你原来的问题答案应该如下:在你最初的问题中,是说要实现“一个为所有四个字段都取参数”,所以“强”>我将把四个字段看作ADRESSLIN字段>,因为已经有5个字段,包括PASCODE字段。 额外:在命名变量时,请遵循Java中的命名转换。例如:邮政编码应为邮政编码,尽量避免变量名称中的数字
public Address(String addressLine1, String addressLine2, String addressLine3, String addressLine4){//Here I considered the four fields as addressLine attributes
this.addressLine1 = addressLine1;
this.addressLine2 = addressLine2;
this.addressLine3 = addressLine3;
this.addressLine4 = addressLine4;
this.postcode ="";
}
从您的问题中,您将
设置所有构造函数中所有变量的值。对于这种调用内部构造函数的场景,Java提供了一个方法this()
。因此,以下应该是正确的组合
class Address{
private String addressLine1;
private String addressLine2;
private String addressLine3;
private String addressLine4;
private String postcode;
//1. one which takes parameters for only address lines 1 and 2 and the postcode
public Address(String addressLine1, String addressLine2, String postCode){
this(addressLine1, addressLine2, "", postCode);
}
//2. one which takes parameters for only address lines 1-3 and the postcode
public Address(String addressLine1, String addressLine2, String addressLine3, String postCode){
this(addressLine1, addressLine2, addressLine3, "");
this.postcode = postCode;
}
//3. one which takes parameters for all four fields,
public Address(String addressLine1, String addressLine2, String addressLine3, String addressLine4){
super();
this.addressLine1 = addressLine1;
this.addressLine2 = addressLine2;
this.addressLine3 = addressLine3;
this.addressLine4 = addressLine4;
}
}
您可以使用不同的参数定义多个构造函数,但是如果(2)和(3)都需要两个字符串参数,那么它们就无法区分。是正确的,毕竟它说构造函数应该为所有4个字段使用“参数”(复数),而不是为所有字段分配一个参数。你所做的没有任何意义。因为你正在为所有addressLine属性初始化相同的值。我想你需要一个具有多个参数的构造函数。(关于已实施的构造函数)你是否照搬了建设者的要求?或者该列表是否部分反映了你对作业的理解?因为你问题中给出的措辞会导致相当高级的作业,这可能不是你的讲师的意图。如果我是对的,请随意将原始措辞添加到问题中。“\u..所有4个字段考虑到Address
对象实际上有五个字段(四个地址行和邮政编码),这有点令人困惑。
public Address(String addressLine1, String addressLine2, String postCode){
this.addressLine1 = addressLine1;
this.addressLine2 = addressLine2;
this.postCode = postCode;
}
public Address(String addressLine1, String addressLine2, String addressLine3, String addressLine4){//Here I considered the four fields as addressLine attributes
this.addressLine1 = addressLine1;
this.addressLine2 = addressLine2;
this.addressLine3 = addressLine3;
this.addressLine4 = addressLine4;
this.postcode ="";
}
public Address(String addressLine1, String addressLine2, String addressLine3, String postcode){
this.addressLine1 = addressLine1;
this.addressLine2 = addressLine2;
this.addressLine3 = addressLine3;
this.addressLine4 = "";
this.postcode = postcode;
}
public Address(String addressLine1, String addressLine2, String postcode){
this.addressLine1 = addressLine1;
this.addressLine2 = addressLine2;
this.addressLine3 = "";
this.addressLine4 = "";
this.postcode = postcode;
}
class Address{
private String addressLine1;
private String addressLine2;
private String addressLine3;
private String addressLine4;
private String postcode;
//1. one which takes parameters for only address lines 1 and 2 and the postcode
public Address(String addressLine1, String addressLine2, String postCode){
this(addressLine1, addressLine2, "", postCode);
}
//2. one which takes parameters for only address lines 1-3 and the postcode
public Address(String addressLine1, String addressLine2, String addressLine3, String postCode){
this(addressLine1, addressLine2, addressLine3, "");
this.postcode = postCode;
}
//3. one which takes parameters for all four fields,
public Address(String addressLine1, String addressLine2, String addressLine3, String addressLine4){
super();
this.addressLine1 = addressLine1;
this.addressLine2 = addressLine2;
this.addressLine3 = addressLine3;
this.addressLine4 = addressLine4;
}
}