abstract è una parola chiave condivisa da una moltitudine di linguaggi di programmazione orientati agli oggetti. I metodi e le classi possono essere contrassegnati come astratti per indicare che non contengono la piena implementazione della logica dell'applicazione e devono essere estesi. Le classi astratte non possono essere istanziate e servono allo scopo di fornire un'interfaccia uniforme per le loro sottoclassi, così come l'implementazione di metodi comuni che non devono essere reimplementati per ogni sottoclasse.