Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Наследование. Базовые и производные классы. Доступы к членам базовых классов




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

Наследование бывает 2-х видов:

-классическое(отношение подчиненности); -модель локализации\диллегирования(объект уже не явл. уточненной версией др.объекта, а содержит в себе этот объект); Наследование часто применять не нужно, а лишь там, где оно оправдано. Класс, который наследуется, называется базовым; который наследует базовый – производным. Следовательно, производный класс – специализированная версия базового класса. При объявлении производного класса сначала записывается Имя_ производного класса: Имя_ базового. Для создаваемого производного класса можно указать только один базовый класс. В С# в отличии от С++ не поддерживается наследование нескольких базовых классов в одном производном. Однако, можно создать иерархию наследования, в кот.один производный класс становится базовым для другого производного. В С# множественное наследование реализуется через интерфейс. Доступы к членам классов и наследования. В классах проекта Figura поля класса объявлены как public. Здесь нарушен принцип инкапсуляции. Можно эти поля объявить как private, но тогда производные классы не получат доступа к ним. Есть 2 способа решения проблемы доступа к закрытым членам базового класса: 1) использовать public-свойства или методы, позволяющие получить доступ к закрытым членам базового класса; 2) использовать уровень доступа protected(защищен). Использование защищенного доступа. Защищенным явл. член класса, кот. открыт для своей иерархии класса, но закрыт вне этой иерархии. Защищенный член класса создается с помощью модификатора доступа protected. По сути он явлю закрытым, но с одним исключением. Это исключение вступает в силу, когда защищенный член класса наследуется. В этом случае защищенный член базового класса становится защищен. членом производного класса, а следовательно доступным для производного класса.

 

28.Конструкторы и наследование (проект «Наследование»).

И базовые классы, и производные классы могут иметь собственные конструкторы. Какой же конструктор отвечает за создание объекта производного класса? Конструктор базового класса создает часть объекта соответствующую базовому классу, а конструктор производного класса создает часть объекта соотв.производному классу. Если конструктор определен только в производном классе, то просто создается объект производного класса. Если конструкторы определены и в базовом, и в производном, то должны выполнятся конструкторы обоих классов. В этом случае используют ключевое слово base, кот. имеет 2 назначения: -вызвать конструктор базового класса; -получить доступ к членам базового класса.

Формат объявления: Конструктор_производного_класса(Список параметров): base (список_аргументов) {//тело конструктора} В списке аргументов задаются параметры из списка производного класса, необходимы конструктору базового класса. Ключевое слово base всегда отсылает к базовому классу, стоящему в иерархии классов непосредственно над вызывающим классом. Чтобы передать аргументы конструктору базового класса, нужно указать их в base ч-з запятую и без типа. При отсутствии слова base автоматически вызывается конструктор базового класса действительно по умолчанию. Если в иерархии классов(Figura-Rectangle-Kwadrat)конструктору базового класса требуются параметры, то все производные классы должны передавать эти параметры независимо от того, нужны ли эти параметры самому производному классу. В иерархии классов конструкторы вызыв-ся в таком порядке: сначала работает конструктор базового класса, а затем конструктор производного класса. Этот порядок не наруш-ся, если использ-ся base,т.к.: базовый класс ничего не знает о производном и он обязан инициализировать свои члены-переменные. -в производном классе тогда можно не инициализировать общие члены-переменные.


 





Поделиться с друзьями:


Дата добавления: 2016-10-06; Мы поможем в написании ваших работ!; просмотров: 866 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Победа - это еще не все, все - это постоянное желание побеждать. © Винс Ломбарди
==> читать все изречения...

3423 - | 3247 -


© 2015-2026 lektsii.org - Контакты - Последнее добавление

Ген: 0.008 с.