Интерфейс

Интерфейсы, структуры, делегаты, события.

Класс Object

Виртуальные методы.

Абстрактные классы.

· При создании иерархии объектов для исключения повторяющегося кода часто нужно выделять общие свойства в один родительский класс

· При этом может оказаться, что создавать экземпляры такого класса не имеет смысла, потому что никакие реальные объекты им не соответствует.

· Такие классы называют абстрактными

· Абстрактный класс служит только для порождения потомков

Бесплодные классы

· От них нельзя наследовать

· Если необходимо использовать функциональность бесплодного класса, применяется не наследование, а вложение или включение: в классе описывается поле соответствующего типа (иерархия типа part of)

· Является корневым для всей иерархии объектов NET

· Можно указывать данный класс в качестве типа параметров методов, обеспечивая общность

Методы:

· Метод Equalse с одним параметром возвращает значение true… Для ссылочных – ссылки, для значимых – сравнение.

· Метод GetType возвращает текущий полиморфный тип объекта, то есть не тип ссылки, а тип объекта на который она в данный момент указывает. Возвращает значение имеет тип Typе.

· Метод ReferenceEquals возвращает ссылки.

· Метод ToString по умолчанию возвращает для ссылочных типов полное имя класса в виде строки, а для значимых – значение величины, преобразованное в строку.

· Интерфейс – это «предельный случай» понятия абстрактного класса.

· В интерфейсе задается набор методов и свойств, которые должны быть реализованы в производных классах.

Сходства интерфейса и абстрактного класса:

· Задают сходное поведение разных классов

· Используются для одинакового обращения к объектам разных классов

· Нельзя создавать объекты.

Отличия интерфейса и абстрактного класса:

· Для интерфейса допустимо множественное наследование

· В интерфейсах нельзя определять методы, только сигнатуры

· В интерфейсах нельзя описывать поля, константы, конструкторы, деструкторы, статические элементы.

· Интерфейсы используются для задания общих свойств классов из разных иерархий, абстрактные классы служат для определения одинакового поведения классов одной иерархии.

· Элементы интерфейса по умолчанию имеют модификатор доступа public и не могут иметь модификаторов, заданных явным образом.

· Класс, производный от интерфейса, должен определять все его элементы, в то время как потомок абстрактного класса может не переопределять часть абстрактных методов предка.

Синтаксис описания:

[атрибуты] [модификаторы]

Interface имя_интерфейса [: предки]

Тело_интерфейса [; ]

Модификаторы:

· New – для вложенных интерфейсов

· Public

· Protected

· Private

· Internal – по умолчанию


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: