Давайте взглянем на язык Java не с практической, а с теоретической точки зрения. Как известно, в популярном языке C++ интерфейс скрыто определяется классом, в тот же момент декларируя тип. Также, в этом случае уникальный случай реализации накрепко связан с таким же единичным интерфейсом. Преследуя цель избегать твердо заданную детерминированность, в языке C++ используются классы – абстракции и порождение множества наследников. Данных проблем не существует в языке Java, так как абсолютно случайный интерфейс может быть реализован любым способом, равно как и класс основывает множество интерфейсов. Тип может быть декларирован интерфейсом, объект может пропускать через себя реализацию, при этом классы будут вообще не задействованы.
Также, большая разница между объявлением типа информации и его практической реализацией отнюдь не вводит в ступор. Как заявлено в спецификациях языка C, именно на виде платформы завязана реализация базовых типов. К тому же, плавающие числа могут быть реализованы только при имеющемся сопроцессоре, независимо от видов платформ.
В определенных случаях объект пропускает через себя реализацию, что означает нахождение упакованных данных в самом объекте для создания интерфейса. При этом классам остается функция наследования при создании интерфейса и, если потребуется, для последующих применений кода. Если же такого не предполагается, класс теряет свое значение и не далее не используется.
Рассмотрим определение анонимных классов. Java спецификация гласит, что провозглашение класса анонимным инициализируется компилятором при использовании автоматической функции. В момент появления экземпляра класса берется его выражение. При обычных условиях создания класса, сначала объявляется оный, а затем производится его экземпляр. При программировании анонимного класса все наоборот. Кстати, можно объяснять наличие анонимного класса желанием оправдать создание объекта.
В таком методе для запаковывания реализаций класс применяется лишь как средство для достижения этой цели. Фактически не зависимая от основы часть кода, содержащая данные, которая является бесполезной вне родных ей рамок. Абсолютно другое значение проявляется при частом повторении этой части кода в разных местах. В этом случае рекомендуется обеспечить доступ из любого нужного места приложения. Из всего этого следует, что повторяющееся использование – единственная область, нуждающаяся в классе. Плюс, в приложении большого размера создание из кода классов поможет сделать его более читабельным.
Не имеет никакого значения, куда помещена сжатая реализация, в анонимный или же обычный класс, действительно важно разграничивать для себя определение ролей класса и интерфейса. Наследование интерфейса делает возможным полиморфизм и наследование типа, кроме него ничто их не может обеспечить реализацией. Интерфейс, точнее концепция их множества придает полиморфизму глубину второго измерения. Например полиморфизм, использующий систему иерархий по стилистике C++, базируется на стандартизации классов и/или интерфейсов , а полиморфизм отдельных экземпляров имеет под собой базу в виде множества реализаций единственного интерфейса.
Два значения составляют основу наследования. «Быть как внешне» - является основой для наследования типа либо поведения, «Быть как внутренне» - является основой для наследования реализации. При этом наследование не может быть как реализации, так и типа. Основано это на невозможности провести наследование реализации, не проводя предварительно наследование интерфейса как на языке C++, так и на Java. В C++ невозможно разделить класс от интерфейса, а в Java разделение возможно только на уровне интерфейса. На уровне класса интерфейс невозможно сделать отдельным.
Скрытое формирование интерфейса определенного класса определяется обобщением широкодоступных public методов как в C++, так и в Java. Из за данной особенности наследование класса декларирует по умолчанию наследование как реализации, так и интерфейса. Как данность, наследование кода и структуры самой информации не определяют потомку тип. Методы применения абстракций идут как одно целое с интерфейсом и не могут быть в реализации. Представим, что их нет в наследовании, и на выходе имеем наследование, не сохраняющее тип.
Сами классы дают ровно две возможности, если их применение нацелено на повтор. Классификация – когда реализация класса применяется самим объектом. Обобщение – когда родительские классы передают потомкам реализацию. Получается, что реальное применение классов возможно в упаковывании кода при неоднократном применении с соблюдением основ объектно-ориентированной технологии.