Различие в ООП между производным классом и наследованным классом?

От ООП точка зрения является там каким-либо различием между производным классом и наследованным классом? Или это - просто терминология?

10
задан j.i.h. 28 January 2013 в 14:00
поделиться

5 ответов

Мне не нравится модель программирования Tapestry, и я знаю, что многие разработчики покидают Tapestry из-за слишком больших изменений и несовместимости в разработке. См.: http://ptrthomas.wordpress.com/2009/09/14/perfbench-update-tapestry-5-and-grails/

-121--1115438-

Короче говоря, можно представить возвращаемое значение селектора jQuery как группу, содержащую 0.. n элементов, но никогда не являющуюся null.

Вероятно, вас действительно интересует $ («# два») [0] , что даст вам первый фактический элемент, возвращенный селектором.

-121--1857323-

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

14
ответ дан 3 December 2019 в 18:33
поделиться

Терминология наследования от Bertran Meyer (объектно-ориентированная конструкция программного обеспечения, стр.464):

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

Следующие термины будут полезны в дополнение к «наследству» и «родители».

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

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

0
ответ дан 3 December 2019 в 18:33
поделиться

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

5
ответ дан 3 December 2019 в 18:33
поделиться

Ответ Нила немного запутался, и поэтому я проверил некоторые публичные источники .

Рассмотрим базовый класс и субкласс ( подкласс ( подкласс BASECLASS в Java Terminology), чем

  • Sub получает базовый класс (субсидиальный класс класс базового класса) и
  • Sub Class наследует из базового класса (Базовый класс - это унаследованный класс вспомогательного класса)

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

2
ответ дан 3 December 2019 в 18:33
поделиться

Я немного изменил свой XML, чтобы иметь значения:

<?xml version="1.0"?>
<Root>
    <MainItem ID="1">
        <SubItem>value 1</SubItem>
        <SubItem>val 2</SubItem>
        <SubItem></SubItem>
    </MainItem>
    <MainItem ID="2">
        <SubItem></SubItem>
        <SubItem></SubItem>
        <SubItem></SubItem>
    </MainItem>
</Root>

и с этим LINQ:

XDocument xmlDoc = XDocument.Load(@"C:\test.xml");
var result = from mainitem in xmlDoc.Descendants("MainItem")
             where mainitem.Attribute("ID").Value == "1"
             select mainitem;


foreach (var subitem in result.First().Descendants())
{
    Console.WriteLine(subitem.Value);
}

Console.Read();
-121--4904209-

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

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

вместо

base.BaseImplementation(); // C#
0
ответ дан 3 December 2019 в 18:33
поделиться