
- •Вопрос 1 Классы обзор элементов класса.
- •Обзор элементов класса.
- •Вопрос 2 Методы. Синтаксический блок. Ссылочные параметры ref и out
- •Объявление методов
- •Возврат из метода и возврат значения
- •Вопрос 3 Перегрузка методов. Перегрузка методов. Вызов методов с одинаковым именем и разными аргументами
- •Вопрос 4 Переменное число аргументов метода params. Переменное число аргументов метода
- •Вопрос 5 Ссылочные параметры ref и out сравнительный анализ.
- •Вопрос 6 Конструкторы. Виды конструкторов, области применения, синтаксический блок.
- •Вызов конструктора экземпляра
- •Закрытые конструкторы экземпляра
- •Статические конструкторы
- •Конструкторы структур
- •Вопрос 7 Свойства. Область применения. Синтаксический блок.
- •Вопрос 8 Наследование. Предпосылки появления. Типы наследования. Синтаксический блок.
- •Вопрос 9 Виртуальные функции virtual. Вызов базовых версий функций base.
- •Вызов базовых версий функций
- •Вопрос 10 Наследование. Динамическое связывание.
- •Вопрос 11 Абстрактные методы. Особенности применения. Синтаксический блок
- •Абстрактный метод в c#
- •Вопрос 12 Абстрактные классы. Синтаксический блок. Особенности.
- •Вопрос 13 Полиморфизм как концепция ооп.
- •Вопрос 14 Потеря и восстановление информации о типе. Операторы is и as.
- •Вопрос 15 Множественное наследование. Интерфейсы область применения. Синтаксический блок.
- •Вопрос 16 Делегаты. Область применения. Синтаксический блок.
- •Вопрос 17 Групповые делегаты. Область применения. Особенности синтаксиса.
- •Вопрос 18 События. Область применения. Синтаксический блок.
- •Вопрос 19 Исключения. Область применения синтаксический блок.
- •Вопрос 20 Потоки данных и файловый ввод-вывод. Виды файлов.
- •Вопрос 21 Класс fileinfo. Обзор элементов класса.
- •Вопрос 22 Классы StreamReader и StreamWriter. Обзор элементов класса.
- •Вопрос 23 Класс List. Особенности применения. Методы и свойства класса.
- •Вопрос 24 Класс StringBuilder. Особенности применения и методы.
- •Вопрос 25 Бинарный ввод и вывод при помощи класса FileStream.
- •Вопрос 26 Форма как базовый элемент графического интерфейса. Заголовок, первоначальное размещение, свойства BackColor, ForeColor, Font; Cursor; BackGroundImage.
- •Вопрос 27 Форма как базовый элемент графического интерфейса. Рамка для формы. Кнопки изменения размеров формы. Прозрачность.
- •Вопрос 28 Передача фокуса ввода на форме. Свойства TabStop TabIndex.
- •Вопрос 29 Текстовые поля. Элемент управления Label и TextBox. Сравнительный анализ.
- •Вопрос 30 Элемент управления MenuStrip.
- •Вопрос 33
- •Вопрос 35 Элементы управления NumericUpDown и DomainUpDown характеристика и сравнительный анализ.
- •Вопрос 36 Вложенные элементы управления(контейнеры) TabControl и GroupBox. Применение элементов управления GroupBox и Panel
- •Применение элемента управления TabControl
- •Вопрос 37 Стыковка и фиксация элементов управления. Свойства Anchor и Dock.
- •Вопрос 38 Методы формы. Show, ShowDialog, Activate, Hide, Close. Методы Show и ShowDialog
- •Метод Activate
- •Метод Hide
- •Метод Close
- •Вопрос 42 Оповещение пользователя об ошибках ввода ErrorProvider.
Вопрос 8 Наследование. Предпосылки появления. Типы наследования. Синтаксический блок.
Наследование — еще один важный механизм ООП, облегчающий повторное использование кода. Наследование позволяет определить новый класс путем расширения существующего. Производный класс наследует элементы старого класса. При необходимости различия между старым и новым классом можно указать двумя способами:
Добавив новые элементы (функции и данные) к производному классу.
Изменив поведение унаследованных функций за счет их новых реализаций.
Понятие наследования является основой еще одной важной концепции ООП — полиморфизма. Полиморфизм обеспечивает доступ к объектам разных типов с помощью одной переменной. Это позволяет одному имени функции соответствовать нескольким различным реализациям на этапе исполнения.
Предпосылки появления наследования
Предположим, что в программе требуется создать объект с атрибутами и функциональностью спортивный автомобиль, вседорожник,. Без наследования это можно сделать двумя способами:
Все три типа объектов можно рассматривать как автомобили и сделать все атрибуты общими. Таким образом, все три типа автомобилей будут экземплярами одного класса.
Можно поступить наоборот — создать три класса.
Оба подхода можно заставить работать, однако у каждого из них есть серьезные недостатки.
Существуют два различных типа наследования: наследование реализации и наследование интерфейса.
Наследование реализации (implementation inheritance) означает, что тип происходит от базового типа, получая от него все поля-члены и функции. При наследовании реализации производный тип адаптирует реализацию каждой функции базового типа, если только в его определении не указано, что реализация функции должна быть переопределена. Такой тип наследования более полезен, когда нужно добавить функциональность существующему типу, или же когда несколько связанных типов разделяют существенный объем общей функциональности. Хороший пример — набор классов Windows Forms, наряду с базовым классом System.Windows.Forms.Control, который представляет очень сложную реализацию общего элемента управления Windows, и многочисленными другими классами, такими как System.Windows.Forms.TextBox и System.Windows.Forms.ListBox, унаследованными от Control и переопределяющими его функции или определяющими новые функции для реализации специальных элементов управления.
Наследование интерфейса (interface inheritance) означает, что тип наследует только сигнатуру функций, но не наследует никакой реализации. Этот тип наследования наиболее полезен, когда нужно специфицировать, что тип обеспечивает доступ к определенным средствам. Например, для некоторых типов может быть указано, что они представляют метод очистки ресурсов, называемый Dispose(), за счет того, что наследуют интерфейс System.Idisposable. Поскольку способ, которым один тип очищает ресурсы, скорее всего, будет очень отличаться от способа очистки ресурсов, используемого другим типом, нет смысла определять никакой общей реализации, а потому в данном случае подходит наследование интерфейса. Наследование интерфейса часто трактуется как выполнение контракта: наследуя интерфейс, тип берет на себя обязанность представить клиентам определенную функциональность.
Синтаксический блок наследования:
[<Спецификатор_доступности>] class <Имя_производного_класса> [ : <Имя_базового_класса>]
{
<Элементы_производного_класса>
}