Программирование на Java

       

Полиморфизм и объекты


В заключение рассмотрим несколько особенностей, вытекающих из свойств полиморфизма.

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

  • непосредственно объявленными в его теле;
  • объявленными в его родительском классе и реализуемых интерфейсах, кроме:
  • private-элементов;

  • "скрытых" элементов (полей и статических методов, скрытых одноименными элементами);
  • переопределенных (динамических) методов.

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

Сведем эти данные в таблицу.

Таблица 8.1. Взаимосвязь типа переменной и типов ее возможных значений.

Тип переменнойДопустимые типы ее значения
Абстрактный класс

  • null

  • неабстрактный наследник

Интерфейс

  • null

  • классы, реализующие интерфейс, а именно:

  • реализующие напрямую (заголовок содержит implements);
  • наследуемые от реализующих классов;
  • реализующие наследников этого интерфейса;
  • смешанный случай - наследование от класса, реализующего наследника интерфейса

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

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



Содержание раздела