2010-01-16 4 views
9

С точки зрения ООП существует ли разница между производным классом и унаследованным классом? Или это просто терминология?OOP Разница между производным классом и унаследованным классом?

+0

точная копия вашего предыдущего вопроса. –

+0

@ David - спасибо Хорошо, я удалил другой вопрос, должен был отправить дважды .... –

ответ

13

При использовании наследования унаследованный класс называется базовым классом, а наследующий класс называется производным классом .

+1

Полностью изменить текст вашего ответа на зеркальный ответ другого пользователя здесь не считается хорошей формой. – 2010-01-16 11:23:01

+0

@Neil: Напротив. Редактирование вашего ответа, чтобы сделать его наилучшим возможным ответом, - это то, о чем идет речь. Конечно, плагиат не очень приятный, но я считаю, что редактирование улучшилось на основе вашего ответа, а не вопиющей копии, тем более, что ваш ответ был специфичным для C++ (не нужно было его настраивать, но вы это сделали.) –

+0

@Vinko Необходимо было сделать это конкретным - разные языки используют разные номенклатуры. Например, программист Smalltalk будет говорить о суперклассе и подклассе, а не о базовом и производном. – 2010-01-16 11:35:41

5

Термин производный класс является предпочтительным, C++ просторечии для класса, который наследует от другого класса, который в C++ просторечии называется базовый класс. Поэтому в C++ термины, о которых вы спрашиваете, идентичны.

2

Ответ Нила немного смутил меня, поэтому я проверил несколько public sources.

Рассмотрим базового класса и подклассов (SubClass extends BaseClass в терминологии Java), чем

  • Sub Class происходит базового класса (Sub Class является производный класс из Базовый класс) и
  • Подкласс наследуется от Базовый класс (базовый класс а/унаследовал класс Суб класса)

Поэтому, на мой взгляд, оба термина определяют те же самые отношения между классам, но с разных точек зрения.

+0

Термин подкласс обычно не используется в C++ - я не знаю о Java - и ОП не спрашивал об этом. – 2010-01-16 11:32:20

+2

Но он не просил C++ ни ... –

0

терминология Наследование Бертрана Мейера (Object-Oriented Software Строительство, p.464):

Основные конвенции и терминология

Приведенные ниже термины будут полезны в дополнение к «Наследник» и "родительский".

потомок из класса C является любой класс, который наследует прямо или косвенно из С, в том числе C самой. (Формально: либо С или рекурсивно, потомок наследника С.) предком из C класс таким образом, что С является потомком ,

В литературе вы также столкнуться терминами «подкласс» и «суперкласс», но мы держаться подальше от них, потому что они неоднозначны; иногда «подкласс» означает наследник (непосредственный потомок), иногда он используется в более общем смысле слова потомок, и не всегда ясно, какой. Кроме того, мы увидим, что термин «подмножество» не всегда оправдан.

0

может быть интересно, если вы переопределить метод, в Delphi вы пишете:

inherited; // so "inherited" is the base class 

вместо

base.BaseImplementation(); // C# 
Смежные вопросы