是声明有类型 "B" 的任何变量或形式参数在运行时间可以持有类 "A" 的一个值；在这种情况下很多面向对象编程者会声称 "B" 是这个变量的“静态类型”而 "A" 是它的“动态类型”。这个规则的例外包括 C++语言中的私有继承（它不建立子类型），和Eiffel语言中在派生类型上特定运算，在其中继承自基类的特征可以用违反子类型规则的方式去除或修改。另一个例子是可以允许整数值被用在期望浮点数值的地方，或可以定义包含整数和实数二者的一个类型 number 的语言。在第一种情况下，整数类型将是浮点数类型的子