HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>Видимость свойств влияет не только на внешнее поведение объектов, но и на отношения между наследуемыми классами. Публичные свойства и методы доступны всем наследникам. К ним можно обращаться как внутри объекта, так и снаружи:</p>
1 <p>Видимость свойств влияет не только на внешнее поведение объектов, но и на отношения между наследуемыми классами. Публичные свойства и методы доступны всем наследникам. К ним можно обращаться как внутри объекта, так и снаружи:</p>
2 <p>Количество классов в цепочке наследования никак не влияет на это поведение. Любой подкласс<em>DivElement</em>, точно так же получит доступ к публичным частям<em>HTMLElement</em>:</p>
2 <p>Количество классов в цепочке наследования никак не влияет на это поведение. Любой подкласс<em>DivElement</em>, точно так же получит доступ к публичным частям<em>HTMLElement</em>:</p>
3 <p>Наследование не влияет на поведение свойств внутри объектов. Значение visible в каждом конкретном объекте связано только с этим объектом:</p>
3 <p>Наследование не влияет на поведение свойств внутри объектов. Значение visible в каждом конкретном объекте связано только с этим объектом:</p>
4 <h2>Приватные свойства и методы</h2>
4 <h2>Приватные свойства и методы</h2>
5 <p>Приватные свойства и методы, доступны только внутри того класса, где они были определены. Наследники не могут получить к ним доступ. Подразумевается, что приватные сущности это нечто персональное для класса, его внутренняя реализация, которую нельзя выставлять наружу. Однако, это не отменяет возможности взаимодействовать с приватными данными через публичный интерфейс.</p>
5 <p>Приватные свойства и методы, доступны только внутри того класса, где они были определены. Наследники не могут получить к ним доступ. Подразумевается, что приватные сущности это нечто персональное для класса, его внутренняя реализация, которую нельзя выставлять наружу. Однако, это не отменяет возможности взаимодействовать с приватными данными через публичный интерфейс.</p>
6 <h2>Защищённые свойства и методы</h2>
6 <h2>Защищённые свойства и методы</h2>
7 <p>Они имеют самое необычное поведение, некая смесь между публичными и приватными. Ключевое слово<em>protected</em>используется тогда, когда разработчик хочет запретить доступ снаружи объекта, но дать возможность работать с ними внутри объекта класса-наследника или суперкласса. Звучит довольно туманно, посмотрим на практике:</p>
7 <p>Они имеют самое необычное поведение, некая смесь между публичными и приватными. Ключевое слово<em>protected</em>используется тогда, когда разработчик хочет запретить доступ снаружи объекта, но дать возможность работать с ними внутри объекта класса-наследника или суперкласса. Звучит довольно туманно, посмотрим на практике:</p>
8 <h2>Выбор</h2>
8 <h2>Выбор</h2>
9 <p>Мы только начали знакомиться с наследованием, но уже сейчас видно, что всё не просто. Одну и ту же задачу можно сделать множеством способов. Какой предпочесть?</p>
9 <p>Мы только начали знакомиться с наследованием, но уже сейчас видно, что всё не просто. Одну и ту же задачу можно сделать множеством способов. Какой предпочесть?</p>
10 <p>Универсальная стратегия, которой стоит придерживаться в большинстве случаев - всегда работать через абстракцию, пока она не мешает. Это значит что все свойства делаются приватными, а наружу выставляется публичный интерфейс (методы). Если из задачи очевидно, что публичный интерфейс нужен только наследникам и не должен использоваться снаружи объекта, то для этих методов ставится модификатор<em>protected</em>.</p>
10 <p>Универсальная стратегия, которой стоит придерживаться в большинстве случаев - всегда работать через абстракцию, пока она не мешает. Это значит что все свойства делаются приватными, а наружу выставляется публичный интерфейс (методы). Если из задачи очевидно, что публичный интерфейс нужен только наследникам и не должен использоваться снаружи объекта, то для этих методов ставится модификатор<em>protected</em>.</p>