@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
начинал с бейсика на УКНЦ в 1988
п.3 var_dump() подойдет ?
п.1 Да. Но ты не можешь к ним обратиться напрямую. Обычно они в родительском классе инициализируются через конструктор. Так что в наследнике вызываешь сперва конструктор родителя . А потом присваиваеш свои дополнительные поля.

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

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

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

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽