3

それらは交換可能な用語ですか?正式な定義と例を挙げていただけますか?

4

2 に答える 2

3

両方の用語(スーパークラスとスーパータイプ)は関連していますが、完全に互換性があるわけではありません。

クラスのみがスーパークラスを持ち、他の分類子はスーパータイプを持ちます。Classは分類子でもあるため、スーパークラスは常にスーパータイプです(スーパークラスは分類子間の一般的な関連付けを再定義するため)が、その逆は当てはまりません。

たとえばlong、Javaのプリミティブ型は、のスーパータイプとして定義されています。プリミティブ型はクラスではないため、はのスーパークラスではありません。intlongint

別の例:UMLでは、コンポーネントとインターフェースはクラスとは異なり(すべて分類子です)、「コンポーネントのスーパークラス」ではなく「コンポーネントのスーパータイプ」と言うのは正しくありません。

于 2013-03-10T11:46:48.043 に答える
0

A が B のサブクラスであるということは、A が継承を使用して形成されていることを主張しているだけです。a が B のサブタイプであるということは、A が B のすべての操作の意味を保持していることを表明します。

サブタイプではないサブクラスを形成することは可能です。(少なくとも一部の言語では) サブクラスではないサブタイプを形成します。

于 2013-03-10T11:51:03.313 に答える