Основные команды и элементы пакета java.util

Приведение типов

Вообще приведение типов (casting) означает, что переменная типа Р преобразуется в тип Q. Например, Р р; Q q= (Q) р. Иногда такое преобразование имеет смысл и допустимо, иногда нет. Графически наследование изображается стрелкой от подкласса к суперклассу.

Два класса на концах стрелки имеют разный тип, поэтому возможны два преобразования (приведения) типов — восходящее (англ. upcasting), по стрелке, и нисходящее (англ. downcasting), против направления стрелки.

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

Пример: класс «домашние животные”, подклассы — »кошки", «собаки. Каждая кошка и каждая собака — домашние животные (upcasting), но не каждое домашнее животное — кошка (downcasting).

Динамическое связывание (динамическое диспетчирование)


Переменная типа Т может содержать ссылку на объект типа Т или на объекты подклассов типа Т.
Например,
class А{...}; class В extends А{... public static void main(String[ ] args){A ra,rb; ra=new A(); rb=new B();-}}

В данном примере метод main, расположенный в классе В, содержит две переменных класса А — rа и rb. Переменная rа получает значение ссылки на объект класса А, переменная rb — значение ссылки на объект класса В.

Предположим, что метод main содержит операторы ra.setA() и rb.setA().

Динамическое связывание гарантирует, что для объекта класса А будет вызван его метод, задающий а=1, а для объекта класса В будет вызван его метод, задающий а=2.

Возможность вызова одного метода для объектов разных типов называется полиморфизм.

Неоднородные массивы


Представим, что есть массив ссылок, элементы которого имеют тип А: A[ ] arrayA = new А[9];. В процессе заполнения массива значениями его элементов могут быть ссылки на объекты класса А или на объекты его подклассов. Для обработки элементов таких массивов в цикле применяют проверку типа объекта или используют возможности динамического диспетчирования.

0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.