Свойства. Область применения. Синтаксический блок

Свойство сочетает в себе поле с методами доступа к нему.

 

Свойство состоит из имени и аксессоров get и set. Аксессоры служат для получения и установки значения переменной. Имя свойства может быть использовано в выражениях и операторах присваивания аналогично имени обычной переменной, но в действительности при обращении к свойству по имени автоматически вызываются его аксессоры get и set.

 

тип имя {

get {

// код аксессора для чтения из поля

}

set {

// код аксессора для записи в поле

}

 

где тип обозначает конкретный тип свойства, например int, а имя — присваиваемое свойству имя. Как только свойство будет определено, любое обращение к свойству по имени приведет к автоматическому вызову соответствующего аксессора. Кроме того, аксессор set принимает неявный параметр value, который содержит значение, присваиваемое свойству.

 

Наследование. Предпосылки появления. Типы наследования. Синтаксический блок.

Наследование позволяет определить новый класс путем расширения существующего. Производный класс наследует элементы старого класса.

 

Класс, от которого произошло наследование, называется базовым или родительским. Классы, которые произошли от базового, называются потомками, наследниками или производными классами.

 

При множественном наследовании у класса может быть более одного предка. В этом случае класс наследует методы всех предков.

 

[<Спецификатор_доступности>] class <Имя_производного_класса> [ : <Имя_базового_класса>]

{

<Элементы_производного_класса>

}

 

Виртуальные функции virtual. Вызов базовых версий функций base.

Объявляя функцию базового класса как virtual, тем самым вы позволяете ее переопределять в классах-наследниках:

Допускается объявление свойства как virtual. Для виртуального или переменного свойства используется такой же синтаксис, что и для невиртуального за исключением ключевого слова virtual, добавляемого к определению.

class <Идентификатор_базового_класса>

{

<Спецификатор_доступности> virtual <Тип__возвр_знач> <Идентификатор_метода> ([<Список_формальных параметров>])

{

< Операторы >

}

}

class <Идентификатор_производного_класса>

{

<Спецификатор_доступности> override <Тип_возвр_знач>

<Идентификатор_метода> ([<Список_формальных_парам>])

{

< Операторы >

}

}

 

Наследование. Динамическое связывание.

 

Наследование позволяет определить новый класс путем расширения существующего. Производный класс наследует элементы старого класса.

 

 

Абстрактные методы. Особенности применения. Синтаксический блок

Абстрактный метод создается с помощью указываемого модификатора типа abstract. У абстрактного метода отсутствует тело, и поэтому он не реализуется в базовом классе. Это означает, что он должен быть переопределен в производном классе, поскольку его вариант из базового класса просто непригоден для использования.

 

abstract тип имя(список_параметров);

 

У абстрактного метода отсутствует тело. Модификатор abstract может применяться только в методах экземпляра, но не в статических методах (static).

 

Абстрактные классы. Синтаксический блок. Особенности.

 

Класс, содержащий один или больше абстрактных методов, должен быть также объявлен как абстрактный, и для этого перед его объявлением class указывается модификатор abstract

 

Когда производный класс наследует абстрактный класс, в нем должны быть реализованы все абстрактные методы базового класса. В противном случае производный класс должен быть также определен как abstract.

 

 

abstract class name

{

// Class members here.

}