У меня есть абстрактный суперкласс, который имеет два атрибута: int и string. Я переопределил метод toString в нем, а также в его подклассе, который имеет один дополнительный атрибут (LocalDate). Однако по какой-то причине, которую я не понимаю, когда я печатаю информацию подкласса toSring, значение int изменяется.
Это то, что у меня есть в суперклассе:
public abstract class File {
private int id;
private String text;
public File(int newId, String newText) throws IllegalArgumentException {
id(newId);
text(newText);
}
public int id() {
return id;
}
public void id(int e) throws IllegalArgumentException {
if (e <= 0) {
throw new IllegalArgumentException();
}
else {
id = e;
}
}
public String text() {
return text;
}
public void text(String aText) throws IllegalArgumentException {
if (aText == null || aText.length() == 0) {
throw new IllegalArgumentException();
}
else {
text = aText;
}
}
@Override
public String toString() {
return '"' + id() + " - " + text() + '"';
}
Тогда в подклассе у меня есть это:
public class DatedFile extends File {
private LocalDate date;
public DatedFile (int newId, LocalDate newDate, String newText) throws IllegalArgumentException {
super(newId, newText);
date(newDate);
}
public LocalDate date() {
return date;
}
public void date(LocalDate aDate) throws IllegalArgumentException {
if (aDate == null) {
throw new IllegalArgumentException();
}
else {
date = aDate;
}
}
@Override
public String toString() {
return '"' + id() + " - " + date + " - " + text() + '"';
}
Я проверил это так:
public static void main(String[] args) {
LocalDate when = LocalDate.of(2020, 1, 1);
DatedFile datedFile1 = new DatedFile(999, when, "Insert text here");
System.out.println(datedFile1);
Он напечатал: «1033 - 2020-01-01 - Вставьте текст здесь». Однако, если я использую следующий код
System.out.println(datedFile1.id());
, он напечатает правильный идентификатор (999). Поэтому я предполагаю, что что-то с toString портит это, но я понятия не имею, в чем проблема.
PS. Я новичок, и мне жаль, если я включил слишком много кода, но, поскольку я не знаю, в чем проблема, я действительно не знаю, что имеет отношение, а что нет.