Një interface deklaron një kontratë — një set metodash që një tip duhet të ofrojë — pa asnjë (ose minimale) implementim. Një klasë abstrakte është një klasë pjesërisht e implementuar që mund të mbajë gjendje të përbashkët dhe metoda konkrete, por nuk mund të instanciohet. Dallimi kyç: një klasë mund të implementojë shumë interface-e, por trashegon nga vetëm një klasë.
