Apstraktna klasa je ona koja je namijenjena samo kao osnovna klasa drugih razreda. 'Abstraktni' modifikator koristi se za stvaranje apstraktne klase. Apstraktni modifikator označava da nedostaje neka implementacija koju treba implementirati u razredu iz nje. Apstraktna klasa može imati apstraktne i ne-apstraktne članove. Apstraktna klasa trebala bi imati barem jednu apstraktnu metodu, jer se u protivnom ne koristi deklarirati tu klasu kao "apstraktnu".
Primjer apstraktne klase u C #:
Kao što je prikazano u gornjem primjeru, apstraktna metoda 'Area' unutar klase MyCircle nadjačava se u izvedenoj klasi MyArea.
Sučelje sadrži samo deklaraciju članova, uključujući metode, svojstva, događaje ili indeksere. Ne sadrži implementaciju ovih članova. Razred ili struktura implementira sučelje, mora dati definiciju metoda deklariranih u sučelju. To znači da sučelje pruža standardnu strukturu koju izvedena klasa treba slijediti.
Primjer sučelja u C #:
Kao što je prikazano u gornjem primjeru, sučelje MyData ima dvije metode deklaracije getdata () i showdata (). Razred NameData koji implementira ovo sučelje trebao bi dati definiciju metoda deklariranih u MyData sučelju.