@wideShift

Что наследуется в ООП? Как работает наследование?

Хотел бы прояснить некоторые моменты про наследование.
1)Когда создается объект класса он наполняется свойствами и методами текущего класса и родителя? Приватные свойства и методы наследуются?
2) Почему нельзя понижать доступ? К примеру у родителя метод public, а у наследника я этот метод переопределил на protected?
3) Возможно ли как-то визуально посмотреть что попадает в объект (в виде дерева или как-то по другому)?
  • Вопрос задан
  • 161 просмотр
Решения вопроса 2
Adamos
@Adamos
Publlic / protected / private - это архитектура. Компьютеру они на хрен не нужны, они ограничивают программиста.
И уж если программист считает, что метод должен быть публичным - значит, любой наследник должен его реализовывать. Если приватным - значит, нечего в него лезть наследникам. Если защищенный - значит, только этот класс и его наследники о том, что он существует, и должны знать.

А если у вас сын утки плавает, как утка, но молчит, как рыба - это не он урод, а вы с планированием классов обосрались. Нет, не тот парень, от чьих классов вы наследуетесь, а именно вы. И те парни, которым надо будет поддерживать ваш код (если они знают не только о принципе Лисков, но и где вы живете) смогут очень доходчиво вам это объяснить.
Ответ написан
@alexanderzanin
  1. Все верно, все наследуется.
  2. Тут нужно понимать, для чего существуют public, protected, private. Public используется для использования функционала класса в других частях программы. Если у класса один метод public и условно 10 private методов, то в приватных методах скрыта реализация функционала, а public уже отдает или получает, или то и другое. Классу, который использует public метод другого класса не важно, как работает все внутри приватных методов. Поэтому и смысла нет в изменении public на protected или private. Иначе ваш класс становиться замкнутым и бесполезным.
  3. тут можно почитать про reflection
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
402d
@402d
начинал с бейсика на УКНЦ в 1988
п.3 var_dump() подойдет ?
п.1 Да. Но ты не можешь к ним обратиться напрямую. Обычно они в родительском классе инициализируются через конструктор. Так что в наследнике вызываешь сперва конструктор родителя . А потом присваиваеш свои дополнительные поля.

п.2) Публик - протектед высасан из пальца.

https://www.php.net/manual/ru/language.oop5.interf...

Понятие интерфейса более удобно когда объект должен уметь что-то делать, чем протягивать наследование от общего предка.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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