Найти тему
Programmer

Картинка. Объект наглядно с коробками и всеми типами наследования.

Предлагаю вам понять всю сущность мира наследования объектов и коробок на примере нарисованного мной рисунка. Здесь я постарался изобразить почти все типы наследования и коробок от частей объекта.. Не судите меня строго, ибо я рисовал в Paint и на мышке, встроенной в ноутбук, то есть водя пальцем по мелкому окну.

Итак, на картинке изображен сложного вида большой объект в памяти серым цветом, который имеет множественное наследование, то есть внутри себя содержит и каркас методов интерфейса в одной части, в другой части серый объект содержит совместно каркас и полное тело абстрактного класса, в еще одной части серый объект содержит обычный класс или чертеж обычного полноценного объекта, у которого есть как виртуальные переопределяющиеся методы (отличающиеся от пустых интерфейсных заполненностью), так и обычные (запечатанные) методы копирующегося типа наследования. А в еще одной части объекта я создал специальное наследование для коробки-указателя, чтобы показать вам возможность "небезопасного" указателя теоретически выходить за пределы объекта и указывать на пустую память, ведь коробки-ссылки могут указывать только внутри объекта на его части.

И вдобавок я оставил расширяющую часть объекта при расширяющем наследовании и подписал ее буквами, чтоб вы понимали сущность расширяющего наследования как интерфейсов и абстрактных классов, так и обычных базовых классов объектов.

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

Итак, вы должны усвоить основы наследования, то есть в области виртуальных (пустых интерфейсных и заполненных) методов объекты всегда могут переопределиться, то есть наследуемые объекты в этой своей части меняют запчасти в одинаковой по размеру коробке от виртуального метода, причем в случае пустых интерфейсных или абстрактных методов переопределение обязательно, а в случае виртуальных методов обычного класса переопределение по желанию. А в другой части наследуемые объекты могут содержать запечатанные методы или без переопределения в наследовании, то есть копирующиеся методы. Они, как и виртуальные, наследуются в свою часть объекта, но не могут переопределиться. Лучше всего такие методы для понимания считать виртуальными, которые мы не переопределяем при наследовании и наследующий объект получает в себя виртуальный метод предка без изменения. И осталось упомянуть сюда четвертый тип расширяющего наследования, когда вы добавляете в наследующий объект новые элементы или методы, которые никак не связаны с виртуальными или запечатанными методами предков. В этом случае вы расширяете объект, так как предки ничего не знают об этой части наследующего объекта.

Вот и все. Понять наследование и коробки очень просто. Позже вам подробно поясню про фантастическое множественное наследование, куда входят и множественная реализация интерфейсов и абстрактных классов. Запоминайте эти принципы на всю жизнь, ибо вам этого в мире больше никто не объяснит!

А вот и картинка в Telegraph для вас по наследованию и коробкам:

Картинка. Объект наглядно с коробками и всеми типами наследования.

Подписывайтесь, ставьте лайки, комментируйте...