Читайте также:
|
|
Рассмотрим правила, которым подчиняются операции приведения классов. Для этого вернемся к иерархии классов 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 |