Массив объектов разных типов
Оценка 4.9

Массив объектов разных типов

Оценка 4.9
docx
18.11.2021
Массив объектов разных типов
Л2-002120.docx

Массив объектов разных типов

Часто возникает необходимость хранить в одном массиве объекты разных типов.

Пример:

Сформировать массив сотрудников факультета: студенты и препо- даватели. Класс Студент аналогичен рассмотренному. Класс Преподава- тель имеет поля: фамилия, название кафедры. Метод – вывод фамилии и названия кафедры.

 

Проблема:

1.   Требуется массив объектов разных типов

2.   Разрешается массив объектов одного типа

 

Решение проблемы:

Все классы (типы) являются наследниками класса Object. Объект этого класса представляет собой ссылку, которой может быть присвоена ссылка любого типа.

 

Object ob;

Студент ст; Преподаватель пр;

ob = ст; ob = пр;


Таким образом, массив должен формироваться как массив типа Object (или массив ArrayList, который по определению содержит ссылки типа Object).

Проблема: при извлечении элементов из такого массива необходимо выполнить обратное преобразование. Преобразование выполняется в явном виде.

Студент


Object       Þ

 

Object ob;

Студент ст;


 

Преподаватель


Преподаватель пр;

ob = пр;

пр = (Преподаватель) ob;

Порядок заполнения элементов массива в общем случае неизвестен, поэтому возникает проблема определения типа объекта, на который указывает сслыка.

Операция проверки возможности преобразования ссылки к целевому типу:


 

ссылка is Тип


true (возможно) false (невозможно)


ob is Преподаватель Þ true ob is Студент Þ false

 

Другой способ:

Воспользоваться методом объекта GetType(). Свойство Name – имя в виде строки символов:

 

ob. GetType().Name Þ «Преподаватель»

 


 

Массив объектов разных типов

Массив объектов разных типов

Таким образом, массив должен формироваться как массив типа

Таким образом, массив должен формироваться как массив типа

Преподаватель Þ true ob is

Преподаватель Þ true ob is
Материалы на данной страницы взяты из открытых истончиков либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.