Abstrak Kelas vs Antara Muka
Kelas abstrak (atau jenis) adalah jenis dalam sistem jenis nominatif yang diisytiharkan oleh program. Walaupun namanya menyiratkannya, kelas abstrak mungkin atau tidak termasuk kaedah atau sifat abstrak. Kelas pembezaan merujuk kepada pembentukan bahasa yang berbeza yang boleh digunakan untuk melaksanakan jenis abstrak. Kelas abstrak boleh dicirikan oleh isu reka bentuk yang terus dengan pemrograman berorientasikan objek yang terbaik dan oleh sifat yang belum selesai.
Antara muka adalah jenis abstrak yang mesti dilaksanakan oleh kelas untuk menentukan antara muka (secara umum). Antara muka hanya boleh mengandungi tanda tangan dan pengisytiharan yang berterusan (kedua-duanya statik dan muktamad), takkan definisi kaedah. Antara muka mensimulasikan pelbagai warisan dan digunakan untuk menyandikan persamaan yang dikongsi di antara pelbagai jenis kelas.
Jenis abstrak dapat dicipta, ditandakan, atau disimulasikan dalam beberapa cara yang berbeza. Seorang pengaturcara boleh menandakan jenis abstrak dengan menggunakan kata kunci abstrak dengan jelas, dengan memasukkan satu atau lebih kaedah dalam definisi kelas, mewarisi dari jenis abstrak yang lain tanpa mengatasi ciri-ciri yang hilang yang diperlukan untuk menyelesaikan definisi kelas, atau dengan menghantar suatu kaedah tertentu ke objek yang berorientasi bahasa pengaturcaraan yang dikenali sebagai ini yang tidak melaksanakan kaedah secara langsung.
Antara muka boleh ditakrifkan menggunakan kaedah abstrak. Kelas juga boleh dilaksanakan di antara muka. Jika kelas tidak melaksanakan antara muka dan tidak melaksanakan semua kaedahnya, penanda abstrak mesti digunakan, jika tidak penanda itu tidak perlu (kerana semua antaramuka adalah abstrak semulajadi). Kelas juga boleh melaksanakan pelbagai antara muka.
Walaupun antara muka digunakan untuk menentukan antara muka generik, jenis abstrak boleh digunakan untuk menentukan dan menguatkuasakan protokol (iaitu satu set operasi yang semua objek yang melaksanakan protokol yang dikehendaki mesti menyokong). Jenis abstrak tidak berlaku dalam bahasa tanpa subtyping. Oleh kerana subtipe tersebut terpaksa melaksanakan semua fungsi yang diperlukan, memastikan ketepatan pelaksanaan program. Terdapat beberapa cara di mana jenis abstrak boleh dibuat: kelas asas abstrak penuh adalah kelas yang sama ada secara eksplisit diisytiharkan sebagai abstrak atau mengandungi kaedah abstrak (tidak dilaksanakan); Common Lisp Systems Object termasuk mixins yang berdasarkan sistem Flavours; Java, tentu saja; dan Traits, yang bertindak sebagai tambahan kepada Smalltalk.
Ringkasan:
1. Kelas abstrak (atau jenis) mengisytiharkan program; antara muka adalah jenis abstrak yang semua kelas mesti dilaksanakan untuk menentukan antara muka mereka.
2. Jenis Abstrak boleh ditandakan menggunakan kata kunci dengan jelas; antara muka adalah abstrak semulajadi, oleh itu tidak perlu ditandakan menggunakan kata kunci sama sekali (melainkan kelas tertentu melaksanakan antara muka tetapi tidak melaksanakan semua kaedahnya).