Perbezaan antara kelas abstrak dan antara muka
- 758
- 167
- Stuart Kovacek
Kelas Abstrak vs. Antara muka
Kelas Abstrak (atau Jenis) adalah sejenis dalam sistem jenis nominatif yang diisytiharkan oleh program. Walaupun namanya menyiratkan seperti itu, kelas abstrak mungkin atau mungkin tidak termasuk kaedah atau sifat abstrak. Kelas perbezaan merujuk kepada pembinaan bahasa yang berbeza yang boleh digunakan untuk melaksanakan jenis abstrak. Kelas Abstrak boleh dicirikan oleh isu reka bentuk yang disimpan dengan pengaturcaraan berorientasikan objek terbaik dan oleh sifat mereka yang belum selesai.
Antara muka adalah jenis abstrak yang mesti dilaksanakan oleh kelas untuk menentukan antara muka (secara umum). Antara muka hanya boleh mengandungi tandatangan kaedah dan pengisytiharan yang berterusan (kedua -dua statik dan akhir), tidak pernah definisi kaedah. Antara muka mensimulasikan pelbagai warisan dan digunakan untuk menyandikan persamaan yang dikongsi di antara pelbagai jenis kelas.
Jenis Abstrak dapat diwujudkan, ditandakan, atau disimulasikan dalam beberapa cara. Pengaturcara boleh menandakan jenis abstrak dengan menggunakan kata kunci abstrak secara eksplisit, dengan memasukkan satu atau lebih kaedah dalam definisi kelas, yang mewarisi dari jenis abstrak yang lain tanpa mengatasi ciri -ciri yang hilang yang diperlukan untuk menyelesaikan definisi kelas, atau dengan menghantar kaedah tertentu ke objek berorientasikan objek 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. Sekiranya kelas melaksanakan antara muka dan tidak melaksanakan semua kaedahnya, abstrak penanda mesti digunakan, jika tidak, penanda tidak diperlukan (kerana semua antara muka adalah abstrak). 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 (yang merupakan 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 dipaksa untuk melaksanakan semua fungsi yang diperlukan, memastikan ketepatan pelaksanaan program. Terdapat beberapa cara di mana jenis abstrak boleh dicipta: kelas asas abstrak penuh adalah kelas yang sama ada secara eksplisit diisytiharkan sebagai abstrak atau mengandungi kaedah abstrak (tidak diletakkan); Sistem objek LISP biasa termasuk campuran yang berdasarkan sistem perisa; Java, tentu saja; dan ciri -ciri, yang bertindak sebagai lanjutan ke 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 secara eksplisit; Antara muka secara semulajadi abstrak, oleh itu tidak perlu ditandakan menggunakan kata kunci sama sekali (kecuali kelas tertentu melaksanakan antara muka tetapi tidak melaksanakan semua kaedahnya).