Вопросы и ответы
Меня попросили смоделировать класс Mammal наряду с классами еще нескольких млекопитающих: Human, Lion и Whale. Должен ли я использовать иерархию на следования, и если да, то какую?
Человек, лев и кит — все млекопитающие и по существу имеют отношения есть. Ис пользуйте открытое наследование, где класс Mammal будет базовым, а другие классы, Human, L io n и W hale, производными от него.
В чем разница между терминами производны й класс и подкласс?
По сути, никакой. Оба подразумевают класс, который происходит (т.е. специализирует) от базового класса.
Производный класс использует открытое наследование в отношении своего базо вого класса. Может ли он обратиться к закрытым членам базового класса?
Нет. Компилятор всегда гарантирует, что самые ограничивающие из использованных модификаторов доступа останутся в силе. Независимо от характера наследования за крытые члены класса никогда не предоставляются (т.е. недоступны) вне класса. Исклю чение — классы и функции, которые были объявлены дружественными ( f r ie n d ) .
Коллоквиум
этом разделе предлагаются вопросы для самоконтроля и закрепления полученных знаний, а также упражнения, которые помогут применить на практике полученные навы ки. Попытайтесь самостоятельно ответить на эти вопросы и выполнить задания, а потом сверьте полученные результаты с ответами в приложении Г, “Ответы”. Если остались не ясными хотя бы некоторые из предложенных ниже вопросов, не приступайте к изучению материала следующего занятия.
Контрольные вопросы
Я хочу, чтобы некоторые члены базового класса были доступны для производного класса, но не вне иерархии классов. Какой модификатор доступа мне использовать?
Что будет, если я передаю объект производного класса по значению функции, ожи дающей в виде параметра базовый класс?
Что лучше? Закрытое наследование или композиция?
Чем ключевое слово u s in g может помочь мне в иерархии наследования?
Класс D e riv e d закрыто наследуется от класса B ase . Другой класс, S u b D e riv e d , открыто наследуется от класса D eriv e d . Может ли класс S u b D e riv ed обратиться к открытым членам класса B ase?
Упражнения
В каком порядке вызываются конструкторы для класса P la ty p u s из листинга 10.10?
Как классы P o ly g o n (Многоугольник), T r i a n g le (Треугольник) и S hape (Форма) связаны друг с другом.
Класс D2 происходит от класса D1, который происходит от класса B ase. Какой мо дификатор доступа использовать и где его расположить, чтобы запретить классу D2 обращаться к открытым членам класса B ase?
Каков характер наследования в этом фрагменте кода?
Do'stlaringiz bilan baham: |