Запутался в параметрах и конструкторах в Java

#java #parameters #constructor

#java #параметры #конструктор

Вопрос:

Итак, в принципе, у меня есть задание, в котором мне нужно сделать много разных вещей. Я застрял в этой части, где мне нужно создать три разных конструктора, которые принимают разные параметры.

Параметры:

  1. Принимает параметры для всех 4 полей — что, я думаю, я сделал в конструкторе ниже.
  2. Один параметр для адресной строки 1-3 и почтового индекса.
  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. Дайте классу три разных конструктора: один, который принимает параметры для всех четырех полей, один, который принимает параметры только для адресных строк 1-3 и почтового индекса, и один, который принимает параметры только для адресных строк 1 и 2 и почтового индекса. Конструкторы, которые не учитывают некоторые поля, должны устанавливать для этих полей значение пустой строки «».

Спасибо.

Комментарии:

1. Вы можете определить несколько конструкторов с разными параметрами, но если оба (2) и (3) ожидают два строковых параметра, их невозможно различить.

2. Я не думаю, что способ, которым вы решили 1. правильный, в конце концов, в нем говорится, что конструктор должен принимать «параметры» (множественное число) для всех 4 полей, а не один параметр, который присваивается всем полям.

3. то, что вы сделали, не имеет никакого смысла. Потому что вы инициализируете одно и то же значение для всех атрибутов адресной строки. Я думаю, вам нужно иметь конструктор с несколькими параметрами. (Относительно реализованного конструктора)

4. Вы буквально скопировали требования к конструкторам? Или этот список частично отражает ваше понимание назначения? Потому что формулировка, приведенная в вашем вопросе, приводит к довольно сложному назначению, что может не соответствовать намерениям вашего преподавателя. если я прав, не стесняйтесь добавлять оригинальную формулировку к вопросу.

5. «_.. все 4 поля» немного сбивает с толку, учитывая, что Address объект на самом деле имеет пять полей (четыре адресные строки и почтовый индекс).

Ответ №1:

  1. Принимает параметры для всех 4 полей — что, я думаю, я сделал в конструкторе ниже.
     public Address(String addressLine1, String addressLine2, String addressLine3, String addressLine4){
       this.addressLine1 = addressLine1;
       this.addressLine2 = addressLine2;
       this.addressLine3 = addressLine3;
       this.addressLine4 = addressLine4;
    }
  
  1. Один параметр для адресной строки 1-3 и почтового индекса.
 
public Address(String addressLine1, String addressLine2, String addressLine3, String postCode){
       this.addressLine1 = addressLine1;
       this.addressLine2 = addressLine2;
       this.addressLine3 = addressLine3;
       this.postCode = postCode;
    }

  
  1. Параметр для адресной строки 1 и 2 и почтового индекса.
 
public Address(String addressLine1, String addressLine2, String postCode){
           this.addressLine1 = addressLine1;
           this.addressLine2 = addressLine2;    
           this.postCode = postCode;
        }

  

Ответ №2:

Согласно вашему первоначальному вопросу, ответ должен быть таким, как показано ниже.В вашем первоначальном вопросе говорится о реализации «того, который принимает параметры для всех четырех полей», поэтому я буду рассматривать четыре поля как поля адресной строки, потому что уже доступно 5 полей, включая поле почтового индекса.

Дополнительно: пожалуйста, следуйте инструкциям по именованию в 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 ="";
    }
  
 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;
        }

  

Ответ №3:

От вас вопрос, который вы собираетесь set value to all variables использовать во всех конструкторах. Для этого сценария вызова внутренних конструкторов 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;
    }
}