Hirarki kelas, juga disebut taksonomi kelas, adalah sekelompok kelas terkait yang terhubung melalui pewarisan untuk melakukan hal serupa. Bagian atas hierarki dapat berupa kelas dasar tunggal dari mana semua kelas lain di bawahnya diturunkan, atau hierarki dapat memiliki beberapa kelas dasar yang fungsinya bergabung bersama kemudian dalam satu atau lebih kelas turunan. Hubungan antar kelas dapat diilustrasikan sebagai pohon, dan setiap pohon yang lebih kecil dalam taksonomi besar juga dapat dianggap sebagai hierarki.
Tidak semua hierarki kelas dapat memiliki banyak akar, dan struktur hierarki kelas mana pun sangat bergantung pada bahasa penulisannya. C++ memungkinkan pewarisan berganda, sehingga hierarki kompleks dapat dibangun dengan banyak akar dan banyak pohon yang bergabung satu sama lain. Java®, di sisi lain, terbatas pada pewarisan tunggal, sehingga hubungan kelasnya biasanya lebih sederhana, dibangun sebagai pohon yang relatif mandiri dengan akar tunggal. Warisan antarmuka dapat menambahkan beberapa kompleksitas ke hierarki kelas di Java®, tetapi antarmuka hampir tidak pernah dipanggil dalam kerangka kerja yang kompleks seperti menggabungkan pohon bersama-sama.
Komponen hierarki kelas dapat bervariasi dalam jenis dan fungsi, selama aturan bahasa selalu diikuti sehubungan dengan pewarisan. Kelas dalam hierarki dapat bersifat publik, dilindungi, abstrak, konkret, atau virtual. Antarmuka, fungsi global, dan teman juga dapat digunakan. Bergantung pada bahasa komputer, beberapa dari jenis ini mungkin lebih cocok untuk pewarisan daripada yang lain. Secara umum, hierarki sangat fleksibel, dan dapat digunakan dalam banyak cara untuk berbagai tujuan.
Tidak ada aturan keras mengenai di mana jenis kelas tertentu harus ditempatkan dalam hierarki. Kelas apa pun dapat berupa salah satu dari jenis yang disebutkan di atas. Secara umum, kelas terakhir dalam hierarki yang tidak memiliki kelas turunan di bawahnya harus bersifat publik dan konkret. Karena hierarki kelas yang murni abstrak juga bisa ada, bagaimanapun, ini hanyalah aturan praktis.
Meskipun hierarki kelas dapat menjadi alat yang berguna untuk mengatur kode dan mengenkapsulasi fungsionalitas, mungkin ada kalanya menggali terlalu dalam ke dalam hierarki sebenarnya dapat membingungkan kode, daripada memperjelasnya dan membuatnya lebih mudah untuk dipelihara. Membangun hubungan yang kuat antara banyak kelas membutuhkan sejumlah pandangan ke depan; walaupun awalnya mungkin lebih mudah untuk memecah kode menjadi banyak bagian kecil, bagian-bagian kecil itu mungkin menjadi lebih sulit untuk ditangani nanti. Ketika dibangun dengan benar, hierarki kelas membantu pengembang dan pengguna dalam menentukan cara kerja kelas. Jika dibangun tanpa pemeliharaan dan kejelasan dalam pikiran, banyak tingkat pewarisan dapat membingungkan untuk dilihat kembali dan dipahami.