7.5.13 集合类型层级和类型一致性规则
除了7.4.5 类型一致性中的类型一致性规则外,下面的规则对所有的类型都适用,包括集合类型:
- Set(X)、Bag(X)和Sequence(X)都是Collection(X)的子类
如下的类型一致性规则适用于集合类型
- 当Type1与Type2相同时,Type1符合Type2(适用所有类型的基本规则)
- 当Type1是Type2子类时,Type1符合Type2(适用所有类型的基本规则)
- 当Type1是Type2子类时,Collection(Type1)符合Collection(Type2)。这同样适用于Set(Type1)/ Set(Type2)、Sequence(Type1)/Sequence(Type2)、Bag(Type1)/Bag(Type2)。
- 类型一致性是传递的:如果Type1符合Type2,Type2符合Type3,那么Type1符合Type3(适用于所有的类型的基本规则)
举个例子,如果Bicycle是Transport的子类:
Set(Bicycle)符合Set(Transport)
Set(Bicycle)符合Collection(Bicycle)
Set(Bicycle)符合Collection(Transport)
注意Set(Bicycle)不符合Bag(Bicycle),反之亦然,因为Set和Bag没有子类关系。