I have the following abstract class:
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;
}
}
and the following subclass:
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;
}
}
I need to create a subclass, but I want to do what works best for creating immutable classes. I assigned my abstract constructor as protected, declared my variables private final / no setters. Is my subclass immutable? Did I do something in bad practice? If so, how to fix it?
user5078574
source
share