Język Java: dziedziczenie a kompozycja
Dziedziczenie stosowane jest w sytuacjach, gdy pomiędzy klasami zachodzi relacja "uogólnienie - specjalizacja".
Kompozycja stosowana jest w sytuacjach, gdy pomiędzy klasami zachodzi relacja "całość - składowa".
Zwykle przy tworzeniu struktury klas używamy dwóch mechanizmów równocześnie. Dla przykładu:
Dom jest budynkiem (dziedziczenie) oraz zawiera: okna, drzwi, ściany i dach (kompozycja).
class House extends Building {
private Window[] windows;
private Door[] doors;
private Wall[] walls;
private Roof roof;
}