Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
С# ЛЕКЦИИ.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
1.75 Mб
Скачать

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

При создании иерархии объектов, для исключения, повторяющегося кода, часто выделяют их общие свойства в один родительский класс. При этом может оказаться, что создавать экземпляры такого класса, не имеет смысла, потому что никакие реальные объекты им не соответствуют, такие классы называются абстрактными. Абстрактный класс, служит только для порождения потомков. Как правило в нем задается набор методов, которые каждый из потомков будет реализовывать по своему. Абстрактный класс задает интерфейс для всей иерархии при этом методом класса, может не соответствовать никаких конкретных действий. В этом случае методы имеют пустое тело и объявляются со спецификатором abstract. Если в классе есть хотя бы один абстрактный метод то весь класс, должен быть описан как абстрактный. Если класс производный от абстрактного не переопределяет все абстрактные методы он так же должен описываться как абстрактный.

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

Если наследовать от класса запрещается, то используется ключевое слово sealed. Большинство встроенных типов данных описано как sealed. Если необходимо использовать функциональность бесплодного класса, то применяется не наследование, а вложение (включение). Вложение классов, когда один класс включает в себя поля являющийся классами является альтернативой наследования при проектировании. Так как поля класса обычно закрыты то необходимо описать метод объемлющего класса, из которого необходимо вызвать метод включенного класса.

Класс Object.

Корневой класс, system.object всей иерархии объектов .Net называется в языке C# object. Он обеспечивает всех наследников несколькими важными методами. Производные классы могут использовать эти методы непосредственно или переопределять их. Класс object часто используется при описании типов параметра методов для придания им общности, а так же для хранения ссылок на объекты различного типа. Открытые методы класса:

Equals он возвращает True если параметр и вызывающий объект ссылаются на одну и ту же область памяти.

Equals (с двумя параметрами) возвращает True если оба параметра ссылаются на одну и ту же область памяти.

GetHashCode метод формирует хэш-код объекта и возвращает число однозначно идентифицирующее объект.

GetType возвращает текущий тип объекта на который в данный момент указывает ссылка. Возвращаемое значение имеет тип Type.

ReferenseEquals возвращает значение true если оба параметра ссылаются на одну и ту же область памяти.

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

Структуры

Структура это тип данных аналогичный классу, но имеющий ряд отличий от него:

  1. Структура является значимым, а не ссылочным типом данных, то есть экземпляр структуры хранит значение своих элементов, а не ссылки на них, и располагается в стеке.

  2. Структура не может участвовать в иерархии наследования она может только реализовывать интерфейсы.

  3. В структуре запрещено определять конструктор по умолчанию.

  4. В структуре запрещено определять деструкторы.

Область применения структур это типы данных имеющих небольшое количество полей, с которыми удобнее работать как со значениями, а не как ссылками.

Синтаксис структуры.

[атрибуты] [спецификаторы] struct имя структуры [: интерфейсов]

{тело структуры}

Спецификаторы доступа для структуры:

Public, Internal, Private(только для вложенных структур)

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

Структуры не могут быть абстрактными и по умолчанию они бесплодны. Так как структуры не могут участвовать в иерархиях, то для их элементов не могут использоваться спецификаторы protected и protected internal.

Методы структур не могут быть абстрактными и виртуальными.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]