Oba definiują typy abstrakcyjne, których nie można bezpośrednio instancjonować i które mają być implementowane/rozszerzane — ale służą różnym celom projektowym. Kluczowe różnice to dziedziczenie wielokrotne, stan i relacja, którą modelują.
Interfejs — umowa ("can-do" / zdolność)
{
;
{
System.out.println();
}
;
}
{
{ }
}
