Интерфейс.
Интерфейсы, структуры, делегаты, события.
Класс Object
Виртуальные методы.
Абстрактные классы.
· При создании иерархии объектов для исключения повторяющегося кода часто нужно выделять общие свойства в один родительский класс
· При этом может оказаться, что создавать экземпляры такого класса не имеет смысла, потому что никакие реальные объекты им не соответствует.
· Такие классы называют абстрактными
· Абстрактный класс служит только для порождения потомков
Бесплодные классы
· От них нельзя наследовать
· Если необходимо использовать функциональность бесплодного класса, применяется не наследование, а вложение или включение: в классе описывается поле соответствующего типа (иерархия типа part of)
· Является корневым для всей иерархии объектов NET
· Можно указывать данный класс в качестве типа параметров методов, обеспечивая общность
Методы:
· Метод Equalse с одним параметром возвращает значение true… Для ссылочных – ссылки, для значимых – сравнение.
· Метод GetTypeвозвращает текущий полиморфный тип объекта, то есть не тип ссылки, а тип объекта на который она в данный момент указывает. Возвращает значение имеет тип Typе.
· Метод ReferenceEqualsвозвращает ссылки.
· Метод ToStringпо умолчанию возвращает для ссылочных типов полное имя класса в виде строки, а для значимых – значение величины, преобразованное в строку.
· Интерфейс – это «предельный случай» понятия абстрактного класса.
· В интерфейсе задается набор методов и свойств, которые должны быть реализованы в производных классах.
Сходства интерфейса и абстрактного класса:
· Задают сходное поведение разных классов
· Используются для одинакового обращения к объектам разных классов
· Нельзя создавать объекты.
Отличия интерфейса и абстрактного класса:
· Для интерфейса допустимо множественное наследование
· В интерфейсах нельзя определять методы, только сигнатуры
· В интерфейсах нельзя описывать поля, константы, конструкторы, деструкторы, статические элементы.
· Интерфейсы используются для задания общих свойств классов из разных иерархий, абстрактные классы служат для определения одинакового поведения классов одной иерархии.
· Элементы интерфейса по умолчанию имеют модификатор доступа public и не могут иметь модификаторов, заданных явным образом.
· Класс, производный от интерфейса, должен определять все его элементы, в то время как потомок абстрактного класса может не переопределять часть абстрактных методов предка.
Синтаксис описания:
[атрибуты] [модификаторы]
Interface имя_интерфейса [: предки]
Тело_интерфейса [ ; ]
Модификаторы:
· New – для вложенных интерфейсов
· Public
· Protected
· Private
· Internal – по умолчанию