Шаг 163.
Язык программирования C#. Начала.
Абстрактные классы и интерфейсы. Выводы
На этом шаге мы подведем некоторые итоги.
Подведем некоторый итог по изученному материалу.
- Абстрактным называется метод, который не содержит описания (у него нет тела с командами, выполняемыми при вызове метода). Абстрактный метод описывается с ключевым словом abstract. Если в классе есть хотя бы один абстрактный метод, то такой класс является абстрактным.
Абстрактный класс также описывается с ключевым словом abstract.
- На основе абстрактного класса нельзя создать объект (но можно объявить объектную переменную абстрактного класса). Абстрактный класс используется как базовый для создания производных классов. В производном классе (если он не является абстрактным) должны
быть описаны (переопределены) все абстрактные методы из абстрактного базового класса.
- Абстрактные методы по умолчанию являются виртуальными. Ключевое слово virtual в объявлении абстрактных методов не используется. При описании (переопределении) абстрактных методов в производном классе используется ключевое слово override. Абстрактный метод не может быть статическим.
- Свойства и индексаторы также могут быть абстрактными. При объявлении абстрактного свойства или индексатора используется ключевое слово abstract. В теле абстрактного свойства или индексатора указываются ключевые слова get и set (без тела с выполняемыми командами).
Если у свойства или индексатора должен быть только один аксессор, то указывается только одно из ключевых слов get или set (в зависимости от того, какой аксессор должен быть у свойства или индексатора).
При описании (переопределении) таких свойств и индексаторов указывается ключевое слово override.
- Интерфейс представляет собой блок из объявления методов, индексаторов, свойств (и событий). Описание интерфейса начинается с ключевого слова interface, после которого указывается название интерфейса.
В блоке из фигурных скобок выполняется объявление методов, свойств и индексаторов. Объявление выполняется так же, как и объявление соответствующих абстрактных членов абстрактного класса, но
при этом ключевые слова public и abstract не используются. Все, что описано в интерфейсе, имеет уровень доступа public.
- Класс может реализовать один или несколько интерфейсов. Интерфейсы, реализуемые в классе, указываются в описании класса после его имени (через двоеточие). Названия интерфейсов разделяются запятыми.
Если при этом класс еще и наследует базовый класс, то перед списком реализуемых интерфейсов указывается имя базового класса.
- Если класс реализует интерфейс, то в классе должны быть описаны все методы, свойства и индексаторы, объявленные в интерфейсе. Соответствующие члены класса описываются с ключевыми словами public и override.
- На основе интерфейса нельзя создать объект, но можно объявить переменную интерфейсного типа. Интерфейсная переменная может ссылаться на объект любого класса, реализующего данный интерфейс. Доступ через такую переменную возможен только к тем членам
объекта, которые объявлены в интерфейсе.
- Для методов, свойств и индексаторов из интерфейса в классе, реализующем интерфейс, можно выполнять явную реализацию. Соответствующий член класса описывается без ключевого слова public, а перед его названием через точку указывается имя
интерфейса. Доступ к такому члену можно получить через интерфейсную переменную соответствующего интерфейса.
На следующем шаге мы рассмотрим несколько примеров программ, в которых используются астрактные классы и интерфейсы.
Предыдущий шаг
Содержание
Следующий шаг