Perbezaan antara Kelas Abstrak dan Antara Muka dalam C # Perbezaan Antara

Anonim

Kelas abstrak kelihatan seperti muka, tetapi konsepnya sedikit mengelirukan untuk pemula OOP. Secara konseptual, kelas abstrak kelihatan seperti antara muka, tentu saja, tanpa sebarang pelaksanaan, namun mereka mempunyai perbezaan yang saksama. Walaupun kelas abstrak boleh sama ada sebahagian atau sepenuhnya dilaksanakan, antara muka mesti dilaksanakan sepenuhnya. Well, perbezaan yang paling ketara antara kedua ialah kelas abstrak boleh mempunyai pelaksanaan lalai, manakala antara muka hanya definisi kaedah yang mengandungi hanya pernyataan anggota. Mari kita bincangkan aspek teori secara terperinci.

Apakah Kelas Abstrak?

Kelas abstrak adalah jenis kelas khas yang bertindak sebagai asas kelas-kelas lain dan tidak boleh instantiated. Logik pelaksanaan kelas abstrak disediakan oleh kelas asalnya. Untuk membuat abstrak kelas, pengubahsuaian "abstrak" digunakan yang bermaksud beberapa pelaksanaan yang hilang perlu dilaksanakan dalam kelas yang diperoleh daripadanya. Ia mengandungi ahli abstrak dan bukan abstrak. Kelas abstrak bertujuan untuk menyediakan fungsi asas yang boleh dikongsi dan diatasi oleh banyak kelas yang diturunkan. Ia berguna untuk mengelakkan sebarang jenis duplikasi kod. Mereka kelihatan sangat seperti antara muka tetapi dengan fungsi tambahan.

Apa itu Antara Muka?

Antara muka, sebaliknya, bukan kelas yang hanya mengandungi tandatangan fungsi. Ini corak tanpa pelaksanaan. Secara konseptual, ia hanya definisi kaedah yang mengandungi hanya pengisytiharan ahli. Ia adalah cangkerang kosong yang tidak mengandungi pelaksanaan anggotanya. Ia seperti kelas asas abstrak yang hanya mengandungi ahli abstrak seperti kaedah, peristiwa, pengindeks, harta, dll. Ia tidak boleh instantiated secara langsung dan ahli-ahlinya boleh dilaksanakan oleh mana-mana kelas. Di samping itu, pelbagai antaramuka boleh dilaksanakan oleh kelas, bagaimanapun, kelas hanya boleh mewarisi kelas tunggal.

Abstrak Kelas vs Antara Muka: perbezaan antara Kelas Abstrak dan Antara Muka dalam C #

  1. Pelbagai Anugerah - Kelas hanya boleh menggunakan satu kelas abstrak, oleh itu warisan berganda tidak disokong. Antarmuka, sebaliknya, boleh menyokong banyak pusaka, yang bermaksud kelas boleh mewarisi apa-apa bilangan warisan.
  2. Definisi Abstrak Kelas dan Antara Muka dalam C # - Kelas abstrak adalah jenis kelas khas yang mungkin mengandungi definisi tanpa pelaksanaan. Logik pelaksanaan diberikan oleh kelas yang diturunkannya. Ia boleh mempunyai kaedah abstrak serta bukan abstrak.Antara muka, sebaliknya, hanya corak yang tidak boleh berbuat apa-apa. Secara teknikal, ia hanya satu shell kosong.
  3. Pelaksanaan - Kelas abstrak boleh mengandungi kedua-dua definisi dan pelaksanaannya. Ia adalah kelas yang tidak lengkap yang tidak dapat diterapkan. Antara muka hanya boleh mempunyai tandatangan fungsi tanpa sebarang kod.
  4. Pengubah Akses - Kelas abstrak boleh mempunyai beberapa pengubah akses seperti subs, fungsi, sifat, dan sebagainya, manakala antara muka tidak dibenarkan mempunyai pengubah akses dan semua kaedah mesti secara tersirat ditakrifkan sebagai awam.
  5. Homogeneity - Kelas abstrak digunakan untuk pelaksanaan jenis, tingkah laku dan status yang sama, manakala antara muka digunakan untuk pelaksanaan yang hanya berkongsi tanda tangan kaedah.
  6. Perisytiharan - Kelas abstrak bertindak sebagai kelas asas untuk semua kelas lain supaya ia boleh mengisytiharkan atau menggunakan sebarang pemboleh ubah sementara antara muka tidak dibenarkan mengisytiharkan sebarang pemboleh ubah.
  7. Pernyataan Pembina - Walaupun kelas abstrak boleh mempunyai pengisytiharan konstruktor, antara muka tidak boleh mempunyai pengisytiharan konstruktor.
  8. Teras vs Periferal - Kelas abstrak digunakan untuk menentukan identiti teras sesuatu kelas dan boleh digunakan untuk objek jenis data yang sama. Antara muka, sebaliknya, digunakan untuk menentukan keupayaan persisian kelas.
  9. Kaku vs Supple - Kelas abstrak lebih lembut dari segi fungsi, sekurang-kurangnya dari perspektif pemaju, manakala antara muka lebih tegar.

Abstrak Kelas vs Interface: Borang Jadual

Kelas Abstrak

Antara Muka

Kelas abstrak boleh mempunyai semua pengubah akses untuk perisytiharan fungsi fungsi, subs, dan sifat. Antara muka tidak dibenarkan untuk mempunyai pengubah akses untuk perisytiharan fungsi fungsi, subs, sifat, dan lain-lain. Semua ahli dianggap secara tersirat awam.
Kelas boleh paling banyak digunakan hanya satu kelas abstrak. Kelas mungkin mewarisi mana-mana bilangan antara muka.
Warisan berbilang tidak disokong dalam kelas abstrak. Antara muka boleh menyokong banyak pusaka.
Secara teknikalnya, ia adalah kelas yang mungkin atau mungkin tidak mengandungi kedua-dua definisi dan pelaksanaannya. Antara muka hanya boleh mempunyai tandatangan fungsi supaya pada asasnya shell kosong.
Kelas abstrak boleh mengandungi ahli. const, kaedah yang ditetapkan, dan kaedah stub. Antara muka hanya boleh mengandungi kaedah dan sebutan.
Ia mentakrifkan identiti teras kelas dan digunakan untuk menggambarkan objek jenis data yang sama. Ia digunakan untuk menggambarkan kebolehan periferi kelas.
Ahli-ahli kelas abstrak tidak boleh statik melainkan ia adalah Ahli Lengkap. Ahli antara muka tidak boleh statik.
Ia sesuai untuk pelaksanaan kelakuan yang sama dan biasa. Lebih baik menggunakan antara muka jika beberapa perlaksanaan hanya berkongsi tandatangan kaedah.
Ia boleh mempunyai pengisytiharan konstruktor. Ia tidak boleh mempunyai pengisytiharan konstruktor.
Kelas abstrak mempunyai bidang dan pembentuk yang telah ditentukan sebelumnya. Bidang tidak boleh ditakrifkan dalam antara muka.
Ia boleh mempunyai kedua-dua kaedah abstrak dan bukan abstrak. Ia hanya boleh mempunyai kaedah abstrak.

Ringkasan

Apakah perbezaan antara kelas abstrak dan antara muka? Ini mungkin salah satu soalan paling biasa yang ditanya dalam sebarang wawancara teknikal. Anda mungkin mendapati kebanyakan maklumat mengenai kelas abstrak dan antara muka dalam mana-mana tutorial C #, bagaimanapun, memahami perbezaan antara kedua-dua adalah bahagian yang sukar. Anda boleh menyatukan semua maklumat yang anda dapati dan masih tidak dapat mencukupi. Baiklah, secara konseptual kedua-duanya adalah istilah yang paling penting dalam pengaturcaraan dan agak sama, bagaimanapun, mereka berbeza jauh dari segi fungsinya. Walaupun kelas abstrak adalah kelas khas kelas yang bertindak sebagai pangkalan untuk kelas-kelas lain, antara muka, sebaliknya, hanyalah cangkerang kosong dengan hanya pernyataan anggota.