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