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 compileConcreteClassOnlyImplementClassAbstract — Java
A concrete class only needs to implement those abstract methods it inherits from abstract superclassesConcreteClassOnlyImplementDirectAbstract — Java
A concrete class only needs to implement abstract methods declared in its direct supertypesConcreteClassOnlyImplementInterfaceAbstract — Java
A concrete class only needs to implement those abstract methods it inherits from interfacesExceptionRoot — Java
Exception is the top-most exception classInterfaceExtendClass — Java
An interface can extend a classMultipleSuperclasses — Java
A class can have multiple superclassesRuntimeExceptionChecked — Java
RuntimeExceptions are checked exceptionsStaticDispatch — Java
The method to be called is determined by the static typeSubtypeCompatibleWithSupertype — Java
A variable of a subtype can reference an object of a supertypeSupertypeIncompatibleWithSubtype — Java
A variable of a supertype cannot reference an object of a subtype