对Java中的参数和构造函数感到困惑

对Java中的参数和构造函数感到困惑,java,parameters,constructor,Java,Parameters,Constructor,所以基本上,我有一个任务,我有很多不同的事情要做。我被困在这一部分,我必须创建三个不同的构造函数,它们采用不同的参数 参数: 获取所有4个字段的参数-我想我在下面的构造函数中做了 地址行1-3和邮政编码的一个参数 地址行1和2以及邮政编码的参数 我尝试过用不同的参数创建不同的构造函数,但它不起作用,因此对此有任何见解都将不胜感激 class Address{ private String addressLine1; private String addressLine2;

所以基本上,我有一个任务,我有很多不同的事情要做。我被困在这一部分,我必须创建三个不同的构造函数,它们采用不同的参数

参数:

  • 获取所有4个字段的参数-我想我在下面的构造函数中做了
  • 地址行1-3和邮政编码的一个参数
  • 地址行1和2以及邮政编码的参数
  • 我尝试过用不同的参数创建不同的构造函数,但它不起作用,因此对此有任何见解都将不胜感激

    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;
            
            
         }
    }
    
    
    编辑:这是关于这个练习阶段的原始问题

  • 为类提供三个不同的构造函数:一个为所有四个字段获取参数,一个仅为地址行1-3和邮政编码获取参数,另一个仅为地址行1和2以及邮政编码获取参数。省略某些字段的构造函数应将这些字段设置为包含空字符串值“”
  • 多谢各位

  • 获取所有4个字段的参数-我想我在下面的构造函数中做了
  • 地址行1-3和邮政编码的一个参数
  • 地址行1和2以及邮政编码的参数

  • 根据你原来的问题答案应该如下:在你最初的问题中,是说要实现“一个为所有四个字段都取参数”,所以“强”>我将把四个字段看作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;
        }
    }