Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Правила приведения к базовому и производному классу

Инкапсуляция с использованием традиционных методов доступа и изменения | Инкапсуляция с использованием свойств .NET | Свойства, доступные только для чтения и только для записи | Статические свойства | Статические конструкторы | SetFullName (fullName); | Ключевое слово sealed | Ключевые слова virtual и override | Абстрактные классы | Полиморфный интерфейс |


Читайте также:
  1. I. ПРАВИЛА ЧТЕНИЯ В АНГЛИЙСКОМ ЯЗЫКЕ
  2. II. Общие правила
  3. II. Общие правила
  4. III. Общие правила внесения сведений в Реестр
  5. IV. Общие для всех полос правила
  6. IX. Структура, состав и правила ведения кадастровых дел
  7. Quot;Почти," - мысленно поправила сама себя, вспомнив наши поцелуи. По телу прошла сладкая волна, обосновавшаяся внизу живота. Блин!

Рассмотрим правила, которым подчиняются операции приведения классов. Для этого вернемся к иерархии классов Employee, созданной ранее в этой работе. На платформе .NET конечным базовым классом служит System.Object. Поэтому все, что создается, "является" Object и может трактоваться как таковой. Учитывая этот факт, в объектной переменной можно хранить ссылку на экземпляр любого типа:

 

(этот код вставляем в проект EmployeeExample, метод Main)

Задание!!!: протестировать, исправить возможные ошибки

Первое правило приведения между типами классов гласит, что когда два класса связаны отношением "является" (наследование), всегда можно безопасно сохранить производный тип в ссылке базового класса. Формально это называется неявным приведением, поскольку оно "просто работает" в соответствии с законами наследования. Это делает возможным построение некоторых мощных программных конструкций. Например, предположим, что в текущем классе Program определен новый метод:

(этот код вставляем в проект EmployeeExample, класс Program)

Задание!!!: протестировать, исправить возможные ошибки

 

Поскольку этот метод принимает единственный параметр типа Employee, можно эффективно передавать этому методу любого наследника от класса Employee, учитывая отношение "является":

(этот код вставляем в проект EmployeeExample, редактируем метод Main)

Задание!!!: протестировать, исправить возможные ошибки

Предыдущий код компилируется, благодаря неявному приведению от типа базового класса (Employee) к производному классу.

Однако что если нужно также вызвать метод GivePromotion () для объекта o (хранимого в данный момент в обобщенной ссылке System.Object)? Если вы передадите объект o непосредственно в GivePromotion(), как показано ниже, то получите ошибку во время компиляции:

// Ошибка!

object o = new Manager("Frank Zappa", 9, 40000, “11-11-1111", 5);


Дата добавления: 2015-07-25; просмотров: 104 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Сокрытие методов| Ключевое слово is

mybiblioteka.su - 2015-2024 год. (0.005 сек.)