Добрый день! Задачу решил, но остался вопрос. В методе main() создал объект b1 и вызвал у него метод getOutputByBookType(); - он приватный в классе Book. И в этом классе Book закомментировал переопределяемый метод toString(). Почему программа скомпилировалась и не ругалась ? Даже строчку вывела как положено по заданию.
public static void main(String[] args) {
Book b1 = new MarkTwainBook("Finn");
String f = b1.getOutputByBookType();
System.out.println(f);
}
......
/*в класс Book*/
/*public String toString() {
return getOutputByBookType();
}*/
Алексей
16 уровень
О наследовании private - методов
Обсуждается
Комментарии (1)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Shelchek
20 сентября 2021, 07:04
Метод toString() формирует нам строку для объекта. Цитата из джава дока: "Returns a string representation of the object". Ты же в main выводишь на экране не объект, а результат работы метода getOutputByBookType() что и есть само по себе строка. Метод toString() для MarkTwainBook тут никак не задействован.
Ну а никакой ошибки компиляции ты не получишь, даже если сделаешь так:
Даже если у тебя нет свой реализации метода toString() в классе, отработает реализация в классе Object, от которого в Java все и наследуется. +3