Kelas dasar, juga disebut kelas super, adalah objek komputer yang bertindak sebagai fondasi untuk satu atau lebih kelas turunan. Setiap bahasa komputer yang mampu mewariskan dapat membuat kelas dasar. Bergantung pada jenisnya yang tepat, kelas dasar mungkin atau mungkin tidak mampu melakukan inisialisasi — menetapkan nilai awal ke objek — sendiri, tetapi mereka selalu memberikan semacam fungsionalitas umum ke kelas mana pun yang mewarisinya. Tidak pernah ada batasan jumlah kelas turunan, atau subkelas, yang dapat dimiliki kelas dasar, tetapi mungkin ada batasan, tergantung pada bahasa komputer, jumlah kelas dasar yang dapat dimiliki kelas turunan. Bahasa yang memungkinkan kelas turunan hanya memiliki satu basis dikatakan menerapkan pewarisan tunggal, sedangkan bahasa yang memungkinkan kelas turunan memiliki beberapa kelas basis menggunakan pewarisan berganda.
Kelas dasar beton dapat diinisialisasi sendiri; yaitu, objek dari tipe kelas dasar dapat dibuat. Jika kelas Contoh adalah basis untuk kelas turunan Example2, objek bertipe Example2 dan objek bertipe Example dapat dibuat keduanya. Objek bertipe Contoh hanya dapat dibuat dengan memanggil tipe objek tersebut secara eksplisit; membuat objek bertipe Example2 tidak membuat objek sekunder bertipe Example. Dalam setiap kasus, tipe objek yang dibuat hanya membangun sebuah instance dari dirinya sendiri.
Kelas dasar abstrak, sebaliknya, tidak dapat diinisialisasi sendiri, yang berarti objek dari kelas dasar tidak dapat dibuat dengan sendirinya. Jika kelas Example3 adalah basis abstrak untuk kelas turunan Example4, hanya objek bertipe Example4 yang dapat dibuat. Meskipun tipe Example4 menyertakan data dari tipe Example3, mencoba membuat objek hanya dari tipe Example3 akan menghasilkan kesalahan. Fungsionalitas ini terkadang berguna, terutama jika kelas Example3 berisi data pribadi yang harus diatur dengan ketat.
Bergantung pada bahasa di mana ia muncul, kelas dasar dapat memiliki perilaku yang sedikit berbeda, dan nama yang sangat berbeda. Di Java®, kelas dasar selalu disebut dengan nama itu, sedangkan di C++, tergantung pada strukturnya, mereka bisa disebut kelas virtual. Perbedaan dalam nama dan fungsionalitas, meskipun signifikan dalam hal bahasa komputer yang digunakan, tidak menyiratkan perbedaan besar dalam prinsip di balik kelas. Kelas dasar selalu digunakan untuk merangkum fungsionalitas umum dan data untuk kelas turunannya, apa pun bahasanya.