Некоторая путаница в отношении наследования - PullRequest
1 голос
/ 25 июня 2019

Я читаю книгу, в которой я не понимаю ниже. 3 проблемы, связанные с наследованием:

1) Во-первых, вы не можете изменить реализации, унаследованные от родительских классов во время выполнения, поскольку наследование определяется во время компиляции.

2) Во-вторых, и, как правило, хуже, родительские классы часто определяют, по крайней мере, часть физического представления своих подклассов. Поскольку наследование подвергает подкласс деталям реализации его родителя, часто говорят, что «наследование нарушает инкапсуляцию».

3) Реализация подкласса становится настолько связанной с реализацией его родительского класса, что любое изменение в реализации родителя заставит подкласс измениться.

Все вышеупомянутые пункты были упомянуты без какого-либо фрагмента кода, поэтому у меня проблемы с пониманием выше 3 пунктов.

Я был бы очень признателен, если бы кто-нибудь мог помочь мне понять вышеприведенные 3 пункта с примером кода и с тем, как в коде каждая из точек влияет и где.

1 Ответ

0 голосов
/ 26 июня 2019

1) Во-первых, вы не можете изменить реализации, унаследованные от родительских классов во время выполнения, поскольку наследование определяется во время компиляции.

Это означает, что отношение наследованиямежду двумя классами устанавливается в коде, который вы пишете, и после компиляции, когда код выполняется, это не может быть изменено.

2) Во-вторых, и, как правило, хуже, родительские классы часто определяют по крайней мере частьфизическое представление их подклассов. Поскольку наследование подвергает подкласс деталям реализации его родителя, часто говорят, что «наследование нарушает инкапсуляцию».

Если вы наследуете некоторого родителя, вы обычно подразумеваете, что подкласс такжекак родитель с некоторыми расширениями и / или основными различиями.Некоторые свойства или поведение являются общими, и у вас есть доступ к этому.Между ними существует определенная степень общего знания, и вы можете думать об этом как об утечке информации.Если инкапсуляция должна быть сохранена любой ценой, вы нарушаете ее (но по уважительным причинам).Если бы это было не так, наследование было бы бесполезным.

3) Реализация подкласса становится настолько связанной с реализацией его родительского класса, что любое изменение в реализации родителя заставит подклассизменить.

У меня нет контекста трех предложений, но да, они должны быть связаны в определенной степени, насколько изменения в родительском элементе влияют на подкласс, это зависит от конкретногослучай.

...