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

Базовые и производные классы.

Основные принципы перегрузки операций | Int data; | Динамическое распределение памяти | Free(newPtr); | Очереди | Алгоритм как абстрактная машина | Сопоставление алгоритмических моделей | Формы рекурсивных процедур. | Пример рекурс алгоритмаЗадача о Ханойских башнях. | Program Hanoi_Towers; |


Читайте также:
  1. II. а). Базовые переменные социально-демографического сегментирования.
  2. Базовые логические элементы И,ИЛИ,НЕ,И-НЕ,ИЛИ-НЕ
  3. Базовые обобщения
  4. Базовые обобщения.
  5. Базовые подходы к проведению изменений
  6. БАЗОВЫЕ ПОНЯТИЯ НЕЙРОПСИХОЛОГИИ

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

При создании нового класса вместо того, чтобы писать совершенно новые элементы данных и функции-элементы, программист может просто указать, что новый класс должен наследовать элементы ранее определенного базового класса. Этот новый класс называется производным классом. Каждый произ­водный класс, в свою очередь, может быть базовым для каких-то будущих производных классов. При простом наследовании производный класс получа­ется на основе только одного базового класса. При сложном наследовании про­изводный класс наследует свойства от многих (возможно, логически не свя­занных) классов. Новый класс, как правило, вводит свои элементы данных и функции, поэтому производный класс, вообще говоря, «больше» исходного ба­зового класса. Новый производный класс имеет больше специфических свойств в сравнении с исходным базовым и представляет меньшую группу объ­ектов. В случае простого наследования производный класс в своей основе оста­ется по существу таким же, как базовый класс. Настоящая сила наследования определяется возможностью добавлять, замещать и уточнять наследуемые от базовых классов свойства.

Каждый объект производного класса является также объектом базового класса, из которого получен этот производный класс. Однако противополож­ное неверно - объекты базового класса не являются объектами производных классов базового объекта. Мы воспользуемся этим отношением - «объект производного класса является объектом базового класса», чтобы выполнять некоторые интересные преобразования. Например, мы можем перечислить много разных объектов, связанных отношением наследования, в связанном списке объектов базового класса. Это позволит обрабатывать разные объекты одним общим образом. Как мы в дальнейшем увидим в этой и следующей гла­вах, это является одним из важнейших методов объектно-ориентированного программирования.

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

Производный класс не может иметь доступа к закрытым элементам своего базового класса; такой доступ нарушал бы инкапсуляцию последнего. Однако производный класс может иметь доступ к открытым и защищенным элемен­там базового класса. Элементы базового класса, доступ к которым не разрешен для производного класса через отношение наследования, должны быть объяв­лены в базовом классе как закрытые. Производный класс может иметь доступ к закрытым элементам базового класса только через специальные функции доступа, предоставляемые открытым интерфейсом базового класса.

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

Часто объект одного класса «является» также и объектом другого класса. Прямоугольник - rectangle,конечно же, является четырехугольником - quadrilateral (как являются и квадрат, и параллелограмм, и трапеция). Таким образом, о классе Rectangle можно сказать, что он наследует классу Quadrila­teral. В этом смысле класс Quadrilateral называется базовым, а класс Rectan­gle называется производным. Прямоугольник является специальным типом четырехугольника, но нельзя исходя из этого утверждать, что четырехуголь­ник является прямоугольником.


Дата добавления: 2015-07-16; просмотров: 72 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Запреты на перегрузку операций| Struct card

mybiblioteka.su - 2015-2024 год. (0.007 сек.)