Een interface declareert een contract — een set methoden die een type moet bieden — met geen (of minimale) implementatie. Een abstracte klasse is een gedeeltelijk geïmplementeerde klasse die gedeelde status en concrete methoden kan bevatten, maar niet kan worden geïnstantieerd. Het cruciale verschil: een klasse kan veel interfaces implementeren, maar kan slechts van één klasse erven.
