Kelas Abstrak vs. Antarmuka
Kelas abstrak (atau tipe) adalah tipe dalam sistem tipe nominatif yang dinyatakan oleh program. Meskipun namanya seperti itu, kelas abstrak mungkin atau mungkin tidak termasuk metode atau properti abstrak. Kelas pembedaan mengacu pada konstruksi bahasa yang berbeda yang dapat digunakan untuk mengimplementasikan tipe abstrak. Kelas abstrak dapat ditandai dengan masalah desain yang sesuai dengan pemrograman berorientasi objek terbaik dan oleh kodratnya yang belum selesai.
Antarmuka adalah jenis abstrak yang harus diimplementasikan oleh kelas untuk menentukan antarmuka (secara umum). Antarmuka hanya dapat berisi tanda tangan metode dan deklarasi konstan (baik statis dan final), tidak pernah definisi metode. Antarmuka mensimulasikan banyak pewarisan dan digunakan untuk menyandikan kesamaan yang dibagi di antara berbagai jenis kelas.
Tipe abstrak dapat dibuat, ditandai, atau disimulasikan dengan beberapa cara berbeda. Seorang programmer dapat menandakan tipe abstrak dengan menggunakan kata kunci abstrak secara eksplisit, dengan memasukkan satu atau lebih metode dalam definisi kelas, mewarisi dari tipe abstrak lain tanpa mengabaikan fitur yang diperlukan untuk melengkapi definisi kelas, atau dengan mengirimkan metode tertentu ke objek berorientasi bahasa pemrograman dikenal sebagai ini yang tidak mengimplementasikan metode secara langsung.
Antarmuka dapat didefinisikan menggunakan metode abstrak. Kelas juga dapat diimplementasikan dalam antarmuka. Jika suatu kelas mengimplementasikan antarmuka dan tidak mengimplementasikan semua metodenya, abstrak penanda harus digunakan, jika tidak penanda itu tidak perlu (karena semua antarmuka secara inheren abstrak). Kelas juga dapat mengimplementasikan banyak antarmuka.
Sementara antarmuka digunakan untuk menentukan antarmuka generik, tipe abstrak dapat digunakan untuk mendefinisikan dan menegakkan protokol (yang merupakan serangkaian operasi yang harus didukung oleh semua objek yang mengimplementasikan protokol yang diinginkan). Tipe abstrak tidak muncul dalam bahasa tanpa subtyping. Karena subtipe seperti itu dipaksa untuk mengimplementasikan semua fungsionalitas yang diperlukan, memastikan kebenaran pelaksanaan program. Ada beberapa cara di mana tipe abstrak dapat dibuat: kelas basis abstrak penuh adalah kelas yang secara eksplisit dinyatakan sebagai abstrak atau berisi metode abstrak (tidak diterapkan); Sistem Objek Lisp Umum mencakup mixin yang didasarkan pada sistem Flavours; Jawa, tentu saja; dan Ciri, yang bertindak sebagai perpanjangan untuk Smalltalk.
Ringkasan:
1. Kelas abstrak (atau tipe) menyatakan program; interface adalah tipe abstrak yang harus diimplementasikan oleh semua kelas untuk menentukan antarmuka mereka.
2. Jenis abstrak dapat ditandai menggunakan kata kunci secara eksplisit; antarmuka secara inheren abstrak, oleh karena itu tidak perlu ditandai menggunakan kata kunci sama sekali (kecuali kelas tertentu mengimplementasikan antarmuka tetapi tidak mengimplementasikan semua metodenya).