#java #parameters #constructor
#java #параметры #конструктор
Вопрос:
Меня попросили создать метод для добавления student в массив с учетом их номера улицы (int) и номера дома (int). Вот пример того, о чем я говорю.
Student a = new Student("Abigail", 1, 5);
Мне разрешено использовать только номер улицы студента и номер дома, который является лишь частью параметров конструктора. Есть ли какой-либо способ связать объект (ученика) только с частью информации?
Вот мой конструктор:
public Student(String n, int sN, int hN){
name = n;
streetNum = sN;
houseNum = hN;
}
Комментарии:
1. Используйте геттеры / сеттеры
2. То, что вам не нужна дополнительная информация в этом
Student
объекте, не означает, что никто другой этого не делает. Предполагается, что все параметры конструктора необходимы для допустимого объекта. С другой стороны: почему вы не можете просто игнорировать «дополнительные» параметры конструктора?
Ответ №1:
Вы можете создать другой конструктор с меньшим количеством параметров, подобных этому:
public class Student {
public static final String DEFAULT_NAME = "Cookie Monster";
public static final String DEFAULT_STREET_NUMBER = 46; //Sesame Street Number?
private String name;
private int streetNum;
private int houseNum;
public Student(String n, int sN, int hN){
name = n;
streetNum = sN;
houseNum = hN;
}
public Student(int sN, int hN){
this(DEFAULT_NAME, sN, hN);
}
public Student(int hN){
this(DEFAULT_STREET_NUMBER, hN);
}
}
Комментарии:
1. Второстепенный момент: вы могли бы продолжать вызывать
this(...)
до конца. Итак, в ctor с одним параметром вы могли бы сделатьthis(46, hN);
, а в одном с двумяthis("DEFAULT_NAME", sN, hN);
Это помогает уменьшить повторение.2. Вы совершенно правы. Я просто сделал так, чтобы он мог видеть некоторые из своих опций. На самом деле я отредактирую ответ.
Ответ №2:
я думаю, что есть два способа:
1) Создайте конструктор, подобный этому:
public Student(int sN, int hN){
streetNum = sN;
houseNum = hN;
}
И использовать его как :
Student a = new Student(1, 5);
2) Или, если вы не хотите использовать конструктор, используйте like:
Student a = new Student("", 1, 5);
Ответ №3:
Вы можете использовать null в построении. Например new Student(null, 5, 1)
, обычно это возможно, но вы перезаписываете значения по умолчанию с помощью этого метода, например, когда имя по умолчанию равно private String name = "Peter"