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

Поиск

Категории

Облако тегов

acer ado.net amd asp.net c sharp c# cms css exceptions google html ipad iphone it бизнес javascript jquery linq microsoft mysql net nokia nokia lumia samsung seo silverlight sql surface tsql windows 8 windows blue windows phone windows rt xna безопасность библиотека вопросы на собеседовании интересные проекты интернет интернет магазин исключения книга книги компьютерная безопасность компьютерные игры контролы курсы по программированию логированние исключений мобильные приложения монетизация сайтов наушники новости новости it новости microsoft новости интернет новости технологий ноутбук ноутбуки обработка исключений оптимизация острова периферия планшет планшеты поддержка сайтов поисковое продвижение программы продвижение продвижение сайта продвижение сайтов рабство разработка игр разработка сайтов раскрутка сайта рекламные технологии смартфон смартфоны собеседование создание сайтов средства разработки туризм фриланс хостинг яндекс
  << Предыдущий пост       Следующий пост >>  
От: 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


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