Perbezaan antara Kelas Abstrak dan Antara Muka dalam C #

Kelas abstrak kelihatan seperti antara muka, tetapi konsepnya agak 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 dapat diterapkan. 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 menyediakan fungsi asas yang boleh dikongsi dan ditindih 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 shell kosong yang tidak mengandungi pelaksanaan ahli-ahlinya. 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 antara muka boleh dilaksanakan oleh kelas, bagaimanapun, kelas hanya boleh mewarisi satu kelas.

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

  1. Pelbagai warisan - 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  daripada Kelas Abstrak dan Antara Muka dalam C #- Kelas abstrak adalah jenis kelas khas yang mungkin mengandungi definisi tanpa pelaksanaan. Logik pelaksanaan diberikan oleh kelas yang diturunkan. Ia boleh mempunyai kaedah abstrak serta bukan abstrak. Antara muka, sebaliknya, hanya corak yang tidak boleh dilakukan. 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. Homogenitas - 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 dapat mengisytiharkan atau menggunakan sebarang pembolehubah sementara antara muka tidak dibenarkan mengisytiharkan sebarang pemboleh ubah.
  7. Pengisytiharan 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 kelas dan boleh digunakan untuk objek jenis data yang sama. Antara muka, sebaliknya, digunakan untuk menentukan keupayaan persisian sesuatu kelas.
  9. Rigid 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, dll. Semua ahli diandaikan secara tersirat umum.
Kelas boleh digunakan hanya dengan satu kelas abstrak. Kelas boleh mewarisi mana-mana bilangan antara muka.
Warisan berbilang tidak disokong dalam kelas abstrak. Antara muka boleh menyokong banyak warisan.
Secara teknikalnya, ia adalah kelas yang mungkin atau mungkin tidak mengandungi definisi dan pelaksanaannya. Antara muka hanya boleh mempunyai tandatangan fungsi sehingga 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 mendefinisikan 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 merupakan Ahli Lengkap. Ahli antara muka tidak boleh statik.
Ia sesuai untuk pelaksanaan tingkah laku yang sama dan biasa. Adalah lebih baik untuk menggunakan antara muka sekiranya 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.