In computer science, a subtype states that if given type A is compatible with type B, then A is a subtype of B while not always vice versa. The most important distinction from mere datatype is one datatype can be more than one subtype. The definition is known as Liskov substitution principle.

In object-oriented programming, this means objects of the same subtype respond to the same messages.

A derived type is very similar to subtypes.