@zekohina

Как понять создание дочернего экземпляра типа родителя?

Нашел в одном примере такой код.
Parent obj = new Child();
    obj.method();

Это как воспринимать? Откуда методы и свойства будут браться?
Дайте, пожалуйста, ссылку где можно подробнее про это почитать.
  • Вопрос задан
  • 711 просмотров
Пригласить эксперта
Ответы на вопрос 3
lxsmkv
@lxsmkv
Test automation engineer
class Main {
  public static void main(String[] args) {
    Phone p = new MyPhone();
    p.sayHello();
  }
}
class Phone{
  void sayHello(){System.out.println("Hello Phone");}
}
class MyPhone extends Phone{
  void sayHello(){System.out.println("Hello MyPhone");}
}

дочерний класс переписывает/перекрывает (overrides) метод родительского класса. Если убрать имплементацию из дочернего класса то будет вызван родительский метод. Используется тип ссылки более общего типа, потому что это "наименьший общий делитель" всего семейного древа, так сказать. Дочерние классы могут может еще много чего, но то что определено в родительском классе они могут гарантированно.
Ссылка родительского общего типа может использоваться при обходе коллекций, когда эелементы коллекции могут быть разными детьми но нужно у каждого вызвать этот метод. Так работает например шаблон наблюдатель. Используется тип интефейса как общий знаменатель, все классы которые хотят получать обновления, заносятся в список. И когда событие наступает, пробегаем список и у каждого элемента дергаем метод update, a что произойдет при update решает каждый класс для себя сам.
Ответ написан
Комментировать
@private_tm
JAVA dev
"наследования java" в гугл
Ответ написан
Комментировать
evgeniy8705
@evgeniy8705
Повелитель вселенной
Методы и свойства будут наследоваться либо от родителя, либо хранится в дочернем классе.
В данном случае method() может находиться как в Child, так и в Parent
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы