Вызов базового метода
Бывает так, что функционал метода, который переопределяется, в базовом классе мало отличается от функционала, который должен быть определен в классе наследнике. В таком случае, при переопределении, мы можем вызвать сначала этот метод из базового класса, а дальше дописать необходимый функционал. Это делается при помощи ключевого слова base:
public virtual void ShowInfo() // ShowInfo в классе Person
{
Console.WriteLine("Имя: " + Name);
Console.WriteLine("Возраст: " + Age);
}
public override void ShowInfo() // ShowInfo в классе Student
{
base.ShowInfo(); // вызывает базовый метод ShowInfo()
Console.WriteLine("Название ВУЗа: " + HighSchoolName);
}
Контрольные вопросы:
1.Виртуальный метод.
2.Переопределение метода.
3.Вызов базавого метода.
Тема 9. Интерфейсы
Лекция 25. Интерфейсы
План:
6.Основные понятия
7.Пример опредиления интерфейса и работы с ним
Основные понятия
В объектно-ориентированном программировании иногда требуется определить, что класс должен делать, а не как он будет это делать. Такой подход может быть реализован с помощью абстрактного класса, при этом в абстрактном классе часть методов может быть реализована, часть нет. Кроме этого в С# предусмотрена возможность полностью отделить структуру класса от его реализации. Это делается с помощью интерфейса.
Интерфейс – это «крайний случай» абстрактного класса, в котором не предусмотрена ни одна реализация члена класса. Таким образом, интерфейс описывает функциональность классов, но не определяет способа ее реализации. Каждый класс, наследуя интерфейс, может реализовать его элементы по-своему. Так достигается полиморфизм – объекты разных классов по-разному реагируют на вызовы одного и того же метода.
Синтаксис интерфейса:
[атрибуты] [спецификаторы] interface имя_интерфейса:[предки]
{
//объявление функциональных членов интерфейса без реализации
…
}
Для интерфейса могут быть указаны спецификаторы new, public, internal и private. Спецификатор new применяется для вложенных интерфейсов и имеет такой же смысл, как и соответствующий спецификатор метода класса. По умолчанию интерфейс доступен только из сборки, в которой он описан (internal).
Все функциональные члены интерфейса по умолчанию являются открытыми (public) и абстрактными (abstract), поэтому при описании метода указывается только типа возвращаемого им значения и сигнатуры.
В качестве функциональных членов в интерфейсе можно объявлять сигнатуры методов, свойств, индексаторов и событий (для Windows-приложений). Интерфейсы не могут содержать члены данных, конструкторы, деструкторы или операторные методы (методы, переопределяющие операции). Ни один член интерфейса не может быть объявлен статическим.
Напомним, что класс может наследовать один базовый класс и несколько интерфейсов. Класс, наследующий интерфейс, должен реализовать его в полном объеме. Т.к. функциональные члены, объявленные внутри интерфейса, являются открытыми, то их реализация также должна быть открытой. Кроме того, сигнатура функционального члена в реализации должна в точности совпадать с сигнатурой, заданной в определении интерфейса.
Дата добавления: 2015-10-26; просмотров: 967;