У меня есть следующий абстрактный класс:Java Создание непреложных подклассов
public abstract class Client {
final private String anonymousCilentID;
final private String anonymousCilentFirstName;
final private String anonymousCilentLastName;
final private String gender;
protected Client(String anonymousCilentID, String anonymousCilentFirstName, String anonymousCilentLastName, String gender) {
this.anonymousCilentID = anonymousCilentID;
this.anonymousCilentFirstName = anonymousCilentFirstName;
this.anonymousCilentLastName = anonymousCilentLastName;
this.gender = gender;
}
public String getAnonymousCilentID() {
return anonymousCilentID;
}
public String getAnonymousCilentFirstName() {
return anonymousCilentFirstName;
}
public String getAnonymousCilentLastName() {
return anonymousCilentLastName;
}
public String getGender() {
return gender;
}
}
и следующий Подкласс:
final public class AnonymousCilent extends Client {
final private Date arrivalDate;
final private String immStatus;
final private Date registrationDate;
final private String registrationSite;
final private String siteName;
final private String comments;
final public class AnonymousCilent extends Client {
final private Date arrivalDate;
final private String immStatus;
final private Date registrationDate;
final private String registrationSite;
final private String siteName;
final private String comments;
public AnonymousCilent(String anonymousCilentID, String anonymousCilentFirstName, String anonymousCilentLastName, String gender, Date arrivalDate, String immStatus, Date registrationDate, String registrationSite, String siteName, String comments) {
super(anonymousCilentID,anonymousCilentFirstName, anonymousCilentLastName, gender);
this.arrivalDate = arrivalDate;
this.immStatus = immStatus;
this.registrationDate = registrationDate;
this.registrationSite = registrationSite;
this.siteName = siteName;
this.comments = comments;
}
public Date getArrivalDate() {
return new Date (arrivalDate.getTime());
}
public String getImmStatus() {
return immStatus;
}
public Date getRegistrationDate() {
return new Date (registrationDate.getTime());
}
public String getRegistrationSite() {
return registrationSite;
}
public String getSiteName() {
return siteName;
}
public String getComments() {
return comments;
}
}
Мне нужно создать подкласс, но я хочу делать то, что является лучшей практикой, когда он приходит к созданию непреложных классов. Я назначил свой абстрактный конструктор защищенным, объявил мои переменные private final/no setters. Является ли мой подкласс неизменным? Я что-то сделал в плохой практике? Если да, то как это исправить?
Ваш подкласс эффективно изменчиво, потому что он выставляет 'date', которое изменчиво ... –
AH! Мне нужно защитное копирование правильно? Кроме этого, вы видите другие проблемы? –