【发布时间】:2013-02-25 06:56:15
【问题描述】:
它们是可互换的术语吗?你能给出正式的定义和例子吗?
【问题讨论】:
-
它们可以互换,就像您的父亲和儿子一样。
标签: oop class polymorphism
它们是可互换的术语吗?你能给出正式的定义和例子吗?
【问题讨论】:
标签: oop class polymorphism
这两个术语(超类和超类型)是相关的,但它们并不完全可以互换。
只有类有超类,而其他分类器有超类。由于 Class 也是 Classifier,所以超类始终是超类(因为超类重新定义了分类器之间的一般关联),但反之则不然。
例如,Java 中的基本类型long is defined 作为int 的超类型。由于原始类型不是类,long 不是int 的超类。
另一个例子:在UML中,组件和接口不同于类(它们都是分类器),那么说“组件的超类”而不是“组件的超类”是不正确的。
【讨论】:
说 A 是 B 的子类只是断言 A 是使用继承形成的。 如果说 a 是 B 的子类型,则表明 A 保留了 B 中所有操作的含义。
可以形成不是子类型的子类;并且(至少在某些语言中)形成不是子类的子类型。
【讨论】: