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
A method invocation on a reference of a type that does not have that method won't compile
ConcreteClassOnlyImplementClassAbstract
A concrete class only needs to implement those abstract methods it inherits from abstract superclasses
ConcreteClassOnlyImplementDirectAbstract
A concrete class only needs to implement abstract methods declared in its direct supertypes
ConcreteClassOnlyImplementInterfaceAbstract
A concrete class only needs to implement those abstract methods it inherits from interfaces
ExceptionRoot
Exception is the top-most exception class
InterfaceExtendClass
An interface can extend a class
MultipleSuperclasses
A class can have multiple superclasses
RuntimeExceptionChecked
RuntimeExceptions are checked exceptions
StaticDispatch
The method to be called is determined by the static type
SubtypeCompatibleWithSupertype
A variable of a subtype can reference an object of a supertype
SupertypeIncompatibleWithSubtype
A variable of a supertype cannot reference an object of a subtype