Давайте в данной статье кратко обсудим смысл всех обобщений или женериков, которые по своей сути являются неполными чертежами типа объекта, то есть они очень близки по смыслу с интерфейсами и абстрактными классами.
Нужно понять, чем обобщения отличаются от интерфейсов и абстрактных классов, а отличаются они видом неполноценности чертежа объекта. Таким образом, интерфейсы и абстрактные классы неполноценны в области пустотелых методов, которые в них полностью не определены или представляют собой каркасы функций. Что касается обобщений, то женерики неполноценны именно в неопределенности типов применяющихся внутри них комплектующих объектов. Это значит, что один параметр (тип входного объекта) неопределенности у обобщенного типа может в чертеже объекта после компиляции определять сколько угодно внутренних комплектующих объектов именно типа данного параметра после его определения или "закрытия женерика". А вот пустые методы в интерфейсах и абстрактных классах имеют неопределенность только в одном месте данного метода!
На картинке показаны основные отличия обобщенных типов или женериков от интерфейсов и абстрактных классов:
На картинке я постарался вам проиллюстрировать отличия женериков по сути от интерфейсов и абстрактных классов. До этого никто в мире не указывал их общность между собой и не обращал на это внимания, но я указываю общность данных сущностей в том, что они все являются неполноценными чертежами объектов, причем фантастическое преимущество женериков в том, что вы можете конструировать чертежи данных объектов на стадии компиляции программы. То есть здесь создание объекта женерика очень похоже на вызов конструктора обычного объекта, но вы должны понимать, что в треугольных скобках "конструктора женерика" вы конструируете чертеж объекта прямо на ходу в строках стороннего кода вне самого класса или типа объекта женерика. То есть вы прямо на ходу вне чертежа или класса устраняете неопределенность чертежа объекта.
В языке C++ в треугольных скобках при создании объекта женерика вы вообще можете использовать обычные параметры по аналогии с обычными конструкторами объектов , то есть числа, строки и другие параметры, которые конструируют объект женерика прямо на ходу на уровне чертежа. Обычно эти параметры вы указываете в обычных конструкторах в круглых скобках при создании объекта.
Надеюсь, что мы еще более для себя разъяснили смысл обобщенных типов в данной статье и при такой полной ясности применять женерики станет совсем просто и без сомнений и раздумий.
Подписывайтесь, ставьте лайки, комментируйте...