ГЛАВНАЯ     АРХИВ     НАПИСАТЬ АДМИНУ     ПОДПИСАТЬСЯ НА RSS     ВОЙТИ      

Поиск

Категории

Облако тегов

  << Предыдущий пост       Следующий пост >>  
От: ironMan
9. августа 2011 21:07

Давайте сначала рассмотрим способы замещения функциональности базового класса в унаследованном методе. Начнем с базового класса, представляющего сотрудника. Чтобы максимально упростить пример, у этого класса будет единственный метод CalculatePay, который будет сообщать имя вызываемого метода и ничего более. Позднее это поможет нам определить, какие методы дерева наследования вызываются.



class Employee
{
public void CalculatePay()
{
Console.WriteLine("Employee.CalculacePay()");
}
}



А теперь допустим, что вы хотите создать класс, производный от Employee, и подменить метод CalculatePay, чтобы выполнять какие-либо действия, специфичные для производного класса. Для этого вам понадобится ключевое слово new с определением метода производного класса. New скрывает унаследованный метод базового класса, замещая его новым методом в унаследованном классе с таким же именем, параметрами и возвращаемым значением.Вот как это делается:



using System;

class Employee
{
public void CalculatePay()
{
Console.WriteLine("Employee.CalcuiatePayf)");
}
}

class SalariedEmployee: Employee
{
/* Ключевое Слово new позволяет заменить */
/* реализацию, содержащуюся в базовом классе */
public new void CalculatePay()
{
Console.WriteLine("SalariedEmployee.CalculatePay()");
}
}

class PolylApp
{
public static void Main()
{
Employee baseE - new Employee ();
baseE.CalcuiatePay f);

SalariedEmployee s = new SalariedEmployee ();
s.CalculatePay();
}
}



Скомпилировав и запустив это приложение, вы получите такой вывод на консоль:



Employ ее.CalculatePay ()
Salaried. CalculatePay ()



( отрывок из книги В. В. Лабор "Си Шарп: Создание приложений для Windows" )

Похожие записи


Перегрузка методов в C#
Перегрузка методов позволяет программистам на С# многократно использовать одни и те же имена методов, меняя лишь передаваемые аргументы. Это очень полезно, по крайней мере, в двух сценариях. Первый. Вам нужно иметь единое имя метода, поведение которого немного различается в зависимости от типа переданных аргументов. Допустим, у вас есть класс, отвечающий за протоколир...

Несколько методов Main в C#
В С# разработчиками включен механизм, позволяющий определять более одного класса с методом Main. Зачем это нужно? Одна из причин — необходимость поместить в ваши классы тестовый код. Затем, используя переключатель /main:<имя_Класса>, компилятору С# можно задавать класс, метод Main которого должен быть задействован. Вот пример, в котором создано два класса,...

Использование анонимных методов с делегатами в C#
Как то коллега спросил меня - "Как можно использовать анонимные методы с делегатом и когда мы это должны делать?" Используя анонимные методы вы уменьшаете кодовый оверхед при инстанцировании делегатов, урезая необходимость в создании отдельного метода. Вы можете использовать его для запуска мелких кусков кода, которые в другом случае потребовали бы именованног...

Добавить комментарий




biuquote
  • Комментарий
  • Предпросмотр
Loading


  Сохранить комментарий