Subtyping
A value of a subtype can be substituted for a value of a supertype.
Related concepts: TypePolymorphismInheritance
Closest Wikipedia entry: Subtyping
Misconceptions about Subtyping11 documented Misconceptions
Check YourselfCallNotStaticallyChecked — Java
A method invocation on a reference of a type that does not have that method won't compile
ConcreteClassOnlyImplementClassAbstract — Java
A concrete class only needs to implement those abstract methods it inherits from abstract superclasses
ConcreteClassOnlyImplementDirectAbstract — Java
A concrete class only needs to implement abstract methods declared in its direct supertypes
ConcreteClassOnlyImplementInterfaceAbstract — Java
A concrete class only needs to implement those abstract methods it inherits from interfaces
ExceptionRoot — Java
Exception is the top-most exception class
InterfaceExtendClass — Java
An interface can extend a class
MultipleSuperclasses — Java
A class can have multiple superclasses
RuntimeExceptionChecked — Java
RuntimeExceptions are checked exceptions
StaticDispatch — Java
The method to be called is determined by the static type
SubtypeCompatibleWithSupertype — Java
A variable of a subtype can reference an object of a supertype
SupertypeIncompatibleWithSubtype — Java
A variable of a supertype cannot reference an object of a subtype