#java #parameters #constructor
#java #параметры #конструктор
Вопрос:
Итак, в принципе, у меня есть задание, в котором мне нужно сделать много разных вещей. Я застрял в этой части, где мне нужно создать три разных конструктора, которые принимают разные параметры.
Параметры:
- Принимает параметры для всех 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 и почтового индекса. Конструкторы, которые не учитывают некоторые поля, должны устанавливать для этих полей значение пустой строки «».
Спасибо.
Комментарии:
1. Вы можете определить несколько конструкторов с разными параметрами, но если оба (2) и (3) ожидают два строковых параметра, их невозможно различить.
2. Я не думаю, что способ, которым вы решили 1. правильный, в конце концов, в нем говорится, что конструктор должен принимать «параметры» (множественное число) для всех 4 полей, а не один параметр, который присваивается всем полям.
3. то, что вы сделали, не имеет никакого смысла. Потому что вы инициализируете одно и то же значение для всех атрибутов адресной строки. Я думаю, вам нужно иметь конструктор с несколькими параметрами. (Относительно реализованного конструктора)
4. Вы буквально скопировали требования к конструкторам? Или этот список частично отражает ваше понимание назначения? Потому что формулировка, приведенная в вашем вопросе, приводит к довольно сложному назначению, что может не соответствовать намерениям вашего преподавателя. если я прав, не стесняйтесь добавлять оригинальную формулировку к вопросу.
5. «_.. все 4 поля» немного сбивает с толку, учитывая, что
Address
объект на самом деле имеет пять полей (четыре адресные строки и почтовый индекс).
Ответ №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-3 и почтового индекса.
public Address(String addressLine1, String addressLine2, String addressLine3, String postCode){
this.addressLine1 = addressLine1;
this.addressLine2 = addressLine2;
this.addressLine3 = addressLine3;
this.postCode = postCode;
}
- Параметр для адресной строки 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;
}
}