Задачу решил тремя различными способами:
1) super.setName("");
2)super.name = "";
3)this.name = "";
вопрос: вданной задаче возможность использовать this срабатывает именно потому, что это переопределенный метод родительского класса? Перефразирую: почему с помощью this меняется поле в родительском классе, хотя по логике должно меняться через super ?
OldFreddy
19 уровень
Подскажите, знающие:)
Решен
Комментарии (5)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Ksenia VolkovaJava Developer в DXCMaster
10 января 2020, 11:53решение
Почему обязательно через super?
Это поле унаследовано классом Cat, значит оно есть в этом классе.
+2
OldFreddy
10 января 2020, 12:16
подскажите, пожалуйсте, почему тогда, если добавить поле name в класс Cat, то при вызове сеттера ответом является null, а не установленное выше "Я пушистик" ?
0
Ksenia VolkovaJava Developer в DXCMaster
10 января 2020, 12:29
Потому что тогда у Cat будет два поля name - собственное (this.name) и родительское (super.name).
+1
OldFreddy
10 января 2020, 12:33
Спасибо
0
Артур
9 июня 2020, 19:11
Поддерживаю Ксению. Если есть возможность не обращаться явно к переменным и методам родителя из класса потомка, то лучше к этому не прибегать без крайней необходимости.
0