Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КПиЯП.doc
Скачиваний:
0
Добавлен:
26.09.2019
Размер:
264.7 Кб
Скачать

71) Что называется перегрузкой конструкторов?.

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

.72) Что такое статический конструктор?

Существует второй тип конструкторов – статические конструкторы, или конструкторы класса. Конструктор экземпляра инициализирует данные экземпляра, конструктор класса – данные класса.Статический конструктор не имеет параметров, его нельзя вызвать явным образом. Система сама определяет момент, в который требуется его выполнить. Гарантируется только, что это происходит до создания первого экземпляра объекта и до вызова любого статического метода.Некоторые классы содержат только статические данные, и, следовательно, создавать экземпляры таких объектов не имеет смысла. Чтобы подчеркнуть этот факт, в первой версии C# описывали пустой закрытый (private) конструктор. Это предотвращало попытки создания экземпляров класса. В примере приведен класс, который служит для группировки величин. Создавать экземпляры этого класса запрещено.

73) Что такое свойства класса?

Свойства служат для организации доступа к полям класса. Как правило, свойство связано с закрытым полем класса и определяет методы его получения и установки.

Синтаксис свойства:

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

{[get код_доступа]

[set код_доступа]}

Значения спецификаторов для свойств и методов аналогичны. Чаще всего свойства объявляются как открытые (со спецификатором public), поскольку они входят в интерфейс объекта.

74) Что такое наследование?

Наследование – создание новых классов на базе существующих.

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

Наследование - это использование базового класса описывающего наиболее общие свойства объекта.

75) Что такое базовый и производный классы?

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

78) Что такое виртуальный метод? Механизм виртуальных функций – одна из реализаций основной концепций ООП – полиморфизма. Данный механизм предполагает использование идеи «один интерфейс-множество методов реализации». Эта идея заключается в том, что базовый класс обеспечивает для производных классов все элементы, которые эти классы могут использовать непосредственно, а также содержит набор функций, которые производные классы должны реализовать путем их переопределения (создание собственного кода функции в производном классе, путем сокрытия или замещения кода базовой реализации).

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

1.Если функция виртуалъная в некотором классе, то она останется виртуальной в не зависимости от уровня иерархии.

2.Если в производном классе виртуальная функция не переопределяется, то используется ее версия из базового класса.

3.Виртуальные функции должны иметь один интерфейс по всей иерархии класса.

79) Что такое полиморфизм?

Члены базового класса могут описываться также как virtual (виртуальный), что означает, что такой член может быть переопределен классом, который его наследует. Другими словами, производный класс может использовать альтернативную реализацию данного члена. Это и есть одно из определений полиморфизма.

Сокрытие:При наследовании некоторого члена базового класса наследуется также и его реализация. Если наследуемый член является виртуальным, то имеется возможность переопределить его реализацию, используя ключевое слово override. Независимо от того, является ли наследуемый член виртуальным, при необходимости можно скрыть его реализацию. Например, это полезно, когда наследуемый общий член работает не так, как требуется. Сокрытие достигается использованием следующего кода:

public class mybase

{public void f() { //базовая реализация}}

public class derived: mybase

{ public void f() { //реализация, скрывающая базовую реализацию}}

80) Что такое абстрактный класс?

Это классы и функции, описанные с ключевым словом abstract.Для абстрактного класса нельзя создавать объекты. Главное назначение абстрактных классов – в определении интерфейса для некоторой иерархии классов.Абстрактный класс используется только в качестве базового класса для других классов. Цель определения абстрактного класса - предусмотрение обобщенного базового класса, на основе которого строится иерархия наследования.Абстрактный класс не может быть использован как тип аргумента и как тип возвращаемого значения функции.

81) Что такое абстрактный метод? В объектно-ориентированном программировании метод (функция) класса, который может быть переопределён в классах-наследниках так, что конкретная реализация метода для вызова будет определяться во время исполнения или совокупность данных вместе со множеством операций над ними. Как правило, абстрактный класс описывает некий интерфейс, который должен быть реализован всеми его производными классами. Абстрактный метод языка C# не имеет тела метода и аналогичен чисто виртуальному методу.

82) Что такое закрытый (изолированный) класс?

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

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