Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

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

Ответы к экзамену по ООП

Классы обзор элементов класса.

Классы объявляются с помощью ключевого слова class

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

{

<Переменные_экземпляра>

<Методы>

}

 

При создании классов используется ключевое слово new для объявления экземпляра.

 

Класс — это, по сути, шаблон, по которому можно создавать объекты.

Класс определяет, какие данные и какую функциональность может иметь каждый конкретный объект (называемый экземпляром) этого класса.

Элементы класса можно разделить на три широкие категории:

• данные-члены,

• функции-члены;

• вложенные типы.

Данные-члены состоят из переменных-членов, констант и событий.

Функции-члены могут быть методами, конструкторами, деструкторами, свойствами индексаторами и операциями

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

Методы. Синтаксический блок.

Метод представляет собой блок кода, содержащий набор инструкций. Программа инициирует выполнение операторов, вызывая метод и задавая необходимые аргументы метода. В C# все инструкции выполняются в контексте метода. Метод Main является точкой входа для каждого приложения C#.

В С# определение метода состоит из любых модификаторов (таких как спецификация доступности), типа возвращаемого значения, за которым следует имя метода, затем списка аргументов в круглых скобках и далее — тела метода в фигурных скобках:

[модификаторы] тип_возврата ИмяМетода([параметры])

{

// Тело метода

}

 

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

Перегрузка методов.

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

Тип или число параметров у каждого метода должны быть разными. Они должны также отличаться типами или числом своих параметров.

Переменное число аргументов метода params.

Ключевое слово params позволяет определить параметр метода, принимающий переменное количество аргументов.

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

В объявлении метода после ключевого слова params дополнительные параметры не допускаются, и в объявлении метода допускается только одно ключевое слово params.

Ссылочные параметры ref и out сравнительный анализ.

Ref – используется, если требуется возвращать несколько значений переменной.

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

Конструкторы. Виды конструкторов, области применения, синтаксический блок.

Конструкторы — это методы классов, выполняемые при создании объекта заданного типа. Конструкторы имеют такое же имя, как и классы, и обычно инициализируют члены данных новых объектов.

Конструкторы экземпляров

Конструкторы экземпляров используются для создания переменных члена экземпляра, если создание объекта class осуществляется с помощью выражения new. Для инициализации класса с модификатором static или статических переменных в нестатическом классе необходимо определить статический конструктор.

Закрытые конструкторы

Закрытый конструктор — это особый конструктор экземпляров. Обычно он используется в классах, содержащих только статические элементы. Если в классе один или несколько закрытых конструкторов и ни одного открытого конструктора, то прочие классы (за исключением вложенных классов) не смогут создавать экземпляры этого класса.

Статические конструкторы

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

доступ имя_класса(список_параметров) {

// тело конструктора

}

 

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

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

 

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

 

тип имя {

get {

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

}

set {

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

}

 

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

 

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

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

 

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

 

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

 

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

{

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

}

 

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

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

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

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

{

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

{

< Операторы >

}

}

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

{

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

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

{

< Операторы >

}

}

 

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

 

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

 

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...