【问题标题】:OOP Difference between a derived class and an inherited class?OOP派生类和继承类之间的区别?
【发布时间】:2011-01-05 20:00:03
【问题描述】:

从 OOP 的角度来看,派生类和继承类之间有什么区别吗?还是只是术语?

【问题讨论】:

  • 与您之前的问题完全相同。
  • @David - 谢谢 好的,我删除了另一个问题,必须提交两次......

标签: oop inheritance terminology class-hierarchy


【解决方案1】:

使用继承时,被继承的类称为基类,继承类称为 派生类。

【讨论】:

  • 完全改变你的答案文本以反映另一个用户的答案在 SO 上不被认为是好的形式。
  • @Neil:恰恰相反。编辑您的答案以使其成为最佳答案就是 SO 的全部意义所在。当然,抄袭并不好,但我发现编辑是基于您的答案的改进,而不是公然的副本,特别是因为您的答案是 C++ 特定的(没有必要具体说明,但您做到了。)
  • @Vinko 需要使其具体化——不同的语言使用不同的命名法。例如,Smalltalk 程序员会谈论超类和子类,而不是基类和派生类。
  • @Neil:那么,如果您这么认为,那么您现在有机会改进您的答案,使其比基于您自己的答案更好。
  • 顺便说一句,鉴于问题,我认为不需要特定语言。问题是关于继承和派生的,虽然有些语言可能根本不使用这些术语,但我怀疑是否有任何语言使用这些术语并代表不同的事物。如果存在这样的语言,那将是一个值得补充的答案。
【解决方案2】:

派生类这个术语是 C++ 的首选术语,表示从另一个类继承的类,在 C++ 术语中称为基类。因此,在 C++ 中,您询问的术语是相同的。

【讨论】:

    【解决方案3】:

    尼尔的回答让我有点困惑,所以我查了一些public sources

    考虑一个基类和一个子类(Java 术语中的SubClass extends BaseClass),而不是

    • 子类派生基类(子类是基类的派生类)和
    • 子类继承自基类(基类是子类的一个/继承的类

    所以在我看来,这两个术语定义了类之间的相同关系,但从不同的角度。

    【讨论】:

    • 术语子类在 C++ 中并不常用——我不了解 Java——OP 也没有问过这个问题。
    【解决方案4】:

    Bertran Meyer 的继承术语(面向对象的软件构建,第 464 页):

    基本约定和术语

    除了“继承人”和“父母”之外,以下术语也很有用。

    C 类的后代 是直接或间接继承自 C,包括 C 本身。 (正式地:C 或者递归地,一个 C 的继承人。) C祖先 是一个 A 类,因此 CA 的后代>.

    在文献中你也会遇到“子类”和“超类”这两个词,但是 我们会远离他们,因为他们是模棱两可的;有时“子类”是指 继承人(直系后裔),有时用于更一般意义上的适当 后代,而且并不总是很清楚。此外,我们将看到“子集” 这个词的含义并不总是合理的。

    【讨论】:

      【解决方案5】:

      可能很有趣,如果你重写一个方法,你可以在 Delphi 中编写:

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

      而不是

      base.BaseImplementation(); // C#
      

      【讨论】:

        猜你喜欢
        • 2021-09-07
        • 2023-03-19
        • 1970-01-01
        • 2014-04-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-24
        • 1970-01-01
        相关资源
        最近更新 更多