Dalam pemrograman berorientasi objek, kelas abstrak menyediakan kelas dasar yang dapat digunakan untuk menyediakan kelas lain dengan implementasi dan antarmuka parsial. Mereka tidak lengkap dengan sendirinya dan digunakan dalam situasi pewarisan dalam banyak bahasa pemrograman seperti Java, C++ dan C#. Penggunaannya sebagai kelas dasar berarti mereka sering disebut sebagai kelas dasar abstrak (ABC).
Sebagai bagian integral dari pemrograman berorientasi objek, abstraksi data menghilangkan detail objek yang tidak perlu. Pada dasarnya, itu meringkas objek ke karakteristik pengidentifikasi utamanya. Karakteristik dasar ini memberikan cetak biru yang dapat digunakan untuk membuat objek lain dengan properti yang sama, hanya berbeda dalam detailnya.
Cetak biru ini didefinisikan sebagai kelas. Kelas digunakan untuk mengenkapsulasi kode, sehingga memudahkan programmer, karena ia dapat mereferensikan rutinitas umum tertentu alih-alih menulis rutinitas berulang-ulang. Pemrogram membuat objek anak dari kelas, dan objek ini mewarisi fungsi dan metode di dalam kelas induk.
Tujuan dari kelas abstrak adalah menjadi kerangka kerja di mana kelas lain dibangun. Objek tidak dapat dibuat langsung dari kelas abstrak, hanya dari subkelas milik kelas abstrak. Agar objek mewarisi dari kelas abstrak, subkelas harus dibuat. Objek dari subkelas yang dibuat dari kelas abstrak mewarisi properti dari kelas abstrak itu.
Setiap kelas memodelkan sebuah konsep, dan kelas abstrak cenderung memodelkan konsep yang lebih abstrak menggunakan metode abstrak. Metode abstrak adalah subrutin di dalam kelas abstrak yang tidak mengandung implementasi. Subrutin ini digunakan sebagai tempat penampung untuk ditimpa oleh subkelas atau objek yang dirancang berdasarkan kelas yang berisi metode abstrak itu sendiri.
Ada berbagai metode untuk membuat kelas abstrak. Misalnya, dalam C++, kelas abstrak dibuat dengan mengembangkan kelas dengan setidaknya satu metode abstrak atau fungsi virtual murni. Java menggunakan kata kunci, “abstrak,” untuk menunjukkan kelas abstrak. Namun, mereka tidak didefinisikan dalam bahasa pemrograman yang tidak mendukung gagasan pewarisan.
Warisan adalah proses membuat objek baru dari kelas di mana objek baru dapat menggunakan fungsi dan metode yang ditentukan dalam kelas induknya tanpa perlu menyatakan kembali program. Inilah sebabnya mengapa kelas abstrak berguna. Kelas anak dan objek anak dari subkelas tersebut mewarisi properti dari kelas abstrak induk. Kelas abstrak dianggap superclass dan berada di puncak hierarki struktur kelas, sehingga tidak ada gunanya dalam bahasa yang tidak mendukung pewarisan.