Ett interface deklarerar ett kontrakt — en uppsättning metoder som en typ måste tillhandahålla — utan (eller minimal) implementering. En abstrakt klass är en delvis implementerad klass som kan innehålla delad tillstånd och konkreta metoder men kan inte instansieras. Huvudskillnaden: en klass kan implementera många interface men ärva från bara en klass.
