If S is a subtype of T then an expression of type S may be used anywhere that one of type T can and an implicit type conversion will be applied to convert it to type T.

In object oriented programming, this means that objects of type S must accept every message that one of type T would.