Основные команды и элементы пакета java.util
Приведение типов
Вообще приведение типов (casting) означает, что переменная типа Р преобразуется в тип Q. Например, Р р; Q q= (Q) р. Иногда такое преобразование имеет смысл и допустимо, иногда нет. Графически наследование изображается стрелкой от подкласса к суперклассу.
Два класса на концах стрелки имеют разный тип, поэтому возможны два преобразования (приведения) типов — восходящее (англ. upcasting), по стрелке, и нисходящее (англ. downcasting), против направления стрелки.
Восходящее приведение всегда допустимо и выполняется автоматически, а нисходящее должно задаваться явно. Возможность нисходящего преобразования проверяется на этапе выполнения программы.
Пример: класс «домашние животные”, подклассы — »кошки", «собаки. Каждая кошка и каждая собака — домашние животные (upcasting), но не каждое домашнее животное — кошка (downcasting).
Переменная типа Т может содержать ссылку на объект типа Т или на объекты подклассов типа Т.
Например,
В данном примере метод main, расположенный в классе В, содержит две переменных класса А — rа и rb. Переменная rа получает значение ссылки на объект класса А, переменная rb — значение ссылки на объект класса В.
Предположим, что метод main содержит операторы ra.setA() и rb.setA().
Динамическое связывание гарантирует, что для объекта класса А будет вызван его метод, задающий а=1, а для объекта класса В будет вызван его метод, задающий а=2.
Возможность вызова одного метода для объектов разных типов называется полиморфизм.
Представим, что есть массив ссылок, элементы которого имеют тип А: A[ ] arrayA = new А[9];. В процессе заполнения массива значениями его элементов могут быть ссылки на объекты класса А или на объекты его подклассов. Для обработки элементов таких массивов в цикле применяют проверку типа объекта или используют возможности динамического диспетчирования.
Вообще приведение типов (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 комментариев