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


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

Пример:

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

Проблема:

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

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

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

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

 

Object ob;

Студент ст;

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

ob = ст;

ob = пр;

 

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

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

Студент

Object Þ

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

 

Object ob;

Студент ст;

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

ob = пр;

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

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

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

true (возможно)

ссылка is Тип

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

 

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

ob is Студент Þ false

 

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

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

 

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



Дата добавления: 2019-02-08; просмотров: 520;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.007 сек.