Составители:
Рубрика:
52
9 protected
9 без модификатора
9 private
Унаследовать можно только те компоненты, которые доступны.
Так, классы, размещенные в одном пакете с родительским, наследуют
элементы публичного, защищенного и пакетного уровня доступа,
классы внешних пакетов – публичные и защищенные элементы, при-
чем защищенные элементы доступны только для классов-наследников.
Приватные, или закрытые, элементы доступны только
внутри класса.
6.12 Замещение методов и экранирование пере-
менных
Унаследованные переменные можно экранировать, объявив в рас-
ширяющем классе одноименную переменную того же типа, что и в
родительском классе. Унаследованный метод можно изменить, пере-
определив одноименный метод родительского класса с совпадающим
набором параметров. Причем исходные методы родительского класса
остаются доступны для класса - непосредственного наследника по
предопределенной ссылке super.
Занятие 7. Абстрактные классы
и интерфейсы
Классы могут быть объявлены абстрактными, если создание экзем-
пляров этих классов нежелательно. Абстрактный класс может исполь-
зоваться только как базовый для классов-наследников. То есть, абст-
рактные классы – это классы, требующие доработки.
Любой класс может
быть объявлен абстрактным, класс, со-
держащий хотя бы один абстрактный метод, должен
быть объ-
явлен абстрактным.
7.1 Абстрактные методы
Абстрактные классы могут указать наследникам направление, в ко-
тором эта доработка должна быть выполнена. Достаточно включить
53
один или несколько абстрактных методов, и классы-наследники, не
желающие оставаться абстрактными, будут обязаны их реализовать.
То есть, абстрактный класс имеет возможность, не передавая реализа-
ции, навязать классу-наследнику определенные черты. При сохране-
нии в типах реализаций методов в направлении снизу вверх, нет пре-
пятствий для использования абстрактных классов в качестве
типов
данных. Объект класса – наследника абстрактного родителя всегда
может быть приведен к типу абстрактного класса-предка.
7.2 Интерфейсы
Представьте себе абстрактный класс, в котором нет ни одного реа-
лизованного метода. Имеет ли смысл наследование такого класса?
Наследование – заимствование реализации, а в классе, где нет реали-
заций, заимствовать нечего. Однако никаких формальных препятствий
для наследования нет. И Java не отрицает это, НО, подтверждая поло-
жение диалектического материализма о переходе количества в
качест-
во, вводит определение другого программного элемента – интерфей-
са. Интерфейс представляет собой набор абстрактных методов и/или
набор именованных статических констант. Интерфейс не может быть
унаследован классом – он может быть реализован (имплементирован,
от английского implement) им. Так как в случае интерфейса реализация
методов возлагается на класс-реализатор, то нет препятствий для реа-
лизации одним классом нескольких интерфейсов. Константы, описан-
ные
интерфейсом, доступны из разных классов, и в этом смысле ин-
терфейс является единственной возможностью организовать библио-
теку констант, доступных разным классам из разных пакетов. Импле-
ментированный интерфейс, как и расширенный абстрактный класс,
может определить производный тип, так как описание этого типа из-
вестно.
7.3 Описание интерфейса
Описание интерфейса состоит из заголовка и тела.
Заголовок интерфейса имеет вид:
Страницы
- « первая
- ‹ предыдущая
- …
- 25
- 26
- 27
- 28
- 29
- …
- следующая ›
- последняя »