- •Классы обзор элементов класса.
- •Методы. Синтаксический блок.
- •Перегрузка методов.
- •Переменное число аргументов метода params.
- •Ссылочные параметры ref и out сравнительный анализ.
- •Конструкторы. Виды конструкторов, области применения, синтаксический блок.
- •Свойства. Область применения. Синтаксический блок.
- •Наследование. Предпосылки появления. Типы наследования. Синтаксический блок.
- •Виртуальные функции virtual. Вызов базовых версий функций base.
- •Наследование. Динамическое связывание.
- •Абстрактные методы. Особенности применения. Синтаксический блок
- •Абстрактные классы. Синтаксический блок. Особенности.
- •Полиморфизм как концепция ооп.
- •Потеря и восстановление информации о типе. Операторы is и as.
- •Множественное наследование. Интерфейсы область применения. Синтаксический блок.
- •Делегаты. Область применения. Синтаксический блок.
- •Групповые делегаты. Область применения. Особенности синтаксиса.
- •События. Область применения. Синтаксический блок.
- •Исключения. Область применения синтаксический блок.
- •Потоки данных и файловый ввод-вывод. Виды файлов.
Абстрактные классы. Синтаксический блок. Особенности.
Класс, содержащий один или больше абстрактных методов, должен быть также объявлен как абстрактный, и для этого перед его объявлением class указывается модификатор abstract
Когда производный класс наследует абстрактный класс, в нем должны быть реализованы все абстрактные методы базового класса. В противном случае производный класс должен быть также определен как abstract.
abstract class name
{
// Class members here.
}
Полиморфизм как концепция ооп.
Понятие наследования является основой еще одной важной концепции ООП — по¬лиморфизма. Полиморфизм обеспечивает доступ к объектам разных типов с помощью одной пе¬ременной. Это позволяет одному имени функции соответствовать нескольким различ¬ным реализациям на этапе исполнения.
Потеря и восстановление информации о типе. Операторы is и as.
С# следит за тем, на какой объект (и какого типа) указывает переменная в каждый момент времени. Для доступа к этой информации в программе применяются операции is и as.
Операция is позволяет проверить, является ли переменная (например, myShape) указателем на объект определенного типа (например, Circle). Результат ее — логическое значение true или false.
Чтобы проверить, содержит ли myShape объект Circle, используется логическое выражение:
myShape is Circle, которое возвращает true, если myShape указывает на Circle, и false — в противном случае.
Операция as предназначена специально для нисходящего приведения. Она объединяет операцию is проверки типа, оператор if и операцию приведения в одном действии.
Множественное наследование. Интерфейсы область применения. Синтаксический блок.
С# не поддерживает множественного наследования. Однако он позволяет типу наследовать множество интерфейсов. Это значит, что класс С# может наследоваться от другого класса и любого количества интерфейсов.
Интерфецсы содержат сигнатуры свойств, методов и событий.
Интерфейсы объявляются с помощью ключевого слова interface.
interface имя{
возвращаемый_тип имя_метода1 (список_параметров);
возвращаемый_тип имя_метода2 (список_параметров);
// ...
возвращаемый_тип имя_метода (список_параметров);
}
Как только интерфейс будет определен, он может быть реализован в одном или нескольких классах. Для реализации интерфейса достаточно указать его имя после имени класса, аналогично базовому классу. Ниже приведена общая форма реализации интерфейса в классе:
class имя_класса : имя_интерфейса {
// тело класса
}
Делегаты. Область применения. Синтаксический блок.
Применение делегата аналогично применению абстрактного метода, он определяет тип возвращаемого значения, его формальные параметры, но не определяет заму реализацию.
Применение делегат полезно в том случае, если во время написания кода известно, что действие должно произойти в определенной точке кода, но сам путь реализации его еще не известен.
[<Спецификатор_доступности>] delegate <Тип_возвращаемого_заначения> <Идентификатор>([<Список_формальных_параметров>])