面向对象编程:派生类和继承类的区别是什么?

14

从面向对象编程的角度来看,派生类和继承类之间有什么区别吗?或者这只是术语上的差异?


与您之前的问题完全重复。 - David M
@David - 谢谢。好的,我删除了另一个问题,可能是提交了两次... - JL.
5个回答

16

在使用继承时,被继承的类称为基类(Base Class),而继承它的类称为派生类(Derived Class)。


1
在SO上完全更改您的答案文本以反映另一个用户的答案并不被视为良好的形式。 - anon
@Neil:恰恰相反,编辑您的答案使其成为最佳答案是SO的全部意义所在。当然,抄袭不好,但我认为这次编辑是基于您的答案进行改进,而不是明显的复制,特别是因为您的答案是C++特定的(没有必要这样做,但您确实这样做了)。 - Vinko Vrsalovic
@Vinko,有必要具体说明——不同的编程语言使用不同的术语。例如,Smalltalk程序员会谈论超类和子类,而不是基类和派生类。 - anon
1
@Neil:如果你这么认为,那么现在你有机会改善你的回答,并且让它比起基于你自己的答案更好。 - Vinko Vrsalovic
顺便说一句,考虑到这个问题,我认为没有必要特别针对某种编程语言。这个问题是关于继承和派生的,虽然有些语言可能根本不使用这些术语,但我怀疑在任何语言中都会使用这些术语并代表不同的事物。如果存在这样的语言,那么将其添加到答案中将是值得的。 - Vinko Vrsalovic
我改变了我的答案,因为我意识到当我谷歌一下以确保我写的是正确的答案时,我错了。 - Anton Kuzmin

5

派生类是C++中用于表示从另一个类(在C++中称为基类)继承的类的术语。因此,在C++中,您所询问的术语是相同的。


2

尼尔的回答有点让我困惑,所以我查了一些公开来源

考虑一个基类和一个子类(在Java术语中,SubClass extends BaseClass),那么

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

因此,在我看来,这两个术语定义了两个不同角度下类之间的相同关系。


在C++中,子类这个术语并不常用 - 我不知道Java是否使用 - 而且提问者也没有询问它。 - anon

0

如果你要重写一个方法,在Delphi中你需要这样写:

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

替代

base.BaseImplementation(); // C#

0

Bertran Meyer在《面向对象软件构造》第464页中提到的继承术语:

基本约定和术语

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

C后代是直接或间接继承自C的任何类,包括C本身。(形式上:要么是C,要么是C的继承者的后代。) C祖先是一个类A,使得CA的后代。

在文献中,您还会遇到“子类”和“超类”这些术语,但我们将远离它们,因为它们是模棱两可的;有时“子类”意味着继承者(直接后代),有时它在更一般的意义上使用,表示适当的后代,而且并不总是清楚的。此外,我们将看到,“子集”这个词的内涵并不总是合理的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接