Disyorkan, 2024

Pilihan Editor

Perbezaan Antara Antara Muka dan Kelas Abstrak di Java & C #

Antara muka dan kelas Abstrak kedua-duanya menyumbang kepada "jenis yang tidak lengkap" dalam OOP. Kadang-kadang kita memerlukan superclass untuk menentukan "apa yang perlu dilakukan" tetapi, bukan "bagaimana untuk melakukan", bagaimana cara melakukan bahagian akan dilaksanakan oleh kelas yang diturunkan mengikut keperluannya, " antarmuka " menyediakan penyelesaian untuk ini. Kadang-kadang kita memerlukan kelas superclass yang mentakrifkan beberapa struktur yang umum yang boleh dilaksanakan oleh kelas yang diturunkan dan beberapa struktur tertentu yang boleh digunakan oleh kelas yang diturunkan, " kelas abstrak " menyediakan penyelesaian untuk ini. Perbezaan asas antara antara muka dan kelas abstrak ialah antara muka yang tidak lengkap sepenuhnya dan kelas abstrak sebahagiannya tidak lengkap.

Carta perbandingan

Asas untuk PerbandinganAntara mukaKelas Abstrak
AsasApabila anda hanya mempunyai pengetahuan tentang keperluan bukan mengenai pelaksanaannya, anda menggunakan "Interface".Apabila anda mengetahui sebahagian daripada pelaksanaan yang anda gunakan "Kelas abstrak".
KaedahAntara muka hanya mengandungi kaedah abstrak.Kelas abstrak mengandungi kaedah abstrak serta kaedah konkrit.
Akses Pengubah Kaedah KaedahKaedah antara muka sentiasa "Awam" dan "Abstrak", walaupun kami tidak mengisytiharkan. Oleh itu, ia boleh dikatakan 100%, kelas abstrak murni.Ia tidak wajib bahawa kaedah dalam kelas abstrak akan menjadi awam dan abstrak. Ia juga boleh mempunyai kaedah konkrit.
Modifier Terhad untuk KaedahKaedah antara muka tidak boleh diisytiharkan dengan pengubah berikut:
Awam: Swasta dan Dilindungi
Abstrak: final, statik, disegerakkan, asli, ketat.
Tiada batasan pada modifikat pemboleh ubah kelas abstrak.
Akses Pengubah Penukar PembolehubahAcess Modifier yang dibenarkan untuk Pembolehubah antara muka adalah awam, statik & muktamad sama ada kita mengisytiharkan atau tidak.Pembolehubah dalam kelas abstrak tidak perlu awam, statik, akhir.
Pengubah terhad untuk PembolehubahPembolehubah antara muka tidak boleh diisytiharkan sebagai peribadi, dilindungi, sementara, tidak menentu.Tiada sekatan pada pengubah pemboleh ubah kelas abstrak.
Inisialisasi pembolehubahPemboleh ubah antara muka mesti dimulakan pada masa perisytiharannya.Ia tidak wajib bahawa pemboleh ubah kelas abstrak mesti dimulakan pada masa perisytiharannya.
Contoh dan blok statikAntara muka dalam, anda tidak boleh mengisytiharkan suatu contoh atau blok statik.Kelas abstrak membenarkan contoh atau blok statik di dalamnya.
PembinaAnda tidak boleh mengisytiharkan pembina dalam antara muka.Anda boleh mengisytiharkan pembina di dalam kelas abstrak.

Definisi Antara Muka

Java tidak membenarkan banyak warisan. Iaitu, satu kelas tidak boleh mewarisi lebih daripada satu kelas pada satu masa. Sebab di sebalik ini boleh dijelaskan dengan contoh. Mari kita katakan kita mempunyai dua kelas induk, A dan B dan kelas yang berasal C. Kelas asal C yang mewarisi kedua-dua kelas A dan B. Sekarang, kedua-duanya mempunyai kelas A dan B mempunyai kaedah ditetapkan (), maka ia akan menjadi soalan untuk kelas C yang mana kaedah kelas () ditetapkan sekiranya ia mewarisi. Penyelesaian masalah ini adalah "antara muka".

Antara muka adalah kelas abstrak tulen. Kata kunci yang digunakan untuk membuat antara muka ialah "antara muka". Oleh kerana semua kaedah di dalam antara muka adalah abstrak sepenuhnya. Antara muka hanya menentukan apa kelas mesti dilakukan tetapi, ia tidak menentukan bagaimana ia melakukannya. Hanya kerana semua kaedah yang diisytiharkan di dalam antara muka adalah abstrak, tiada contoh dibuat untuk antara muka. Bentuk umum "interface" di java adalah:

 antaramuka access_specifier interface_name {return-type method-name1 (parameter-list); kaedah jenis kembali-nama2 (parameter-senarai); taip akhir-varname1 = nilai; taip akhir-varname2 = nilai; / / ... jenis kaedah-namaN (parameter-senarai); taip akhir-varnameN = nilai; } 

Penyiasat akses dinyatakan sebagai awam kerana kelas perlu melaksanakan antara muka.

Kami tidak mempunyai konsep "Antara Muka" dalam C ++. Tetapi, Java dan C # menentukan antara muka dengan sangat baik.

Antara muka di Jawa:

  • Pembolehubah antara muka adalah secara lalai sentiasa awam, statik dan akhir.
  • Pembolehubah mesti dimulakan pada masa perisytiharannya.
  • Pembolehubah tidak boleh diisytiharkan sebagai peribadi, dilindungi, sementara dan tidak menentu.
  • Kaedah antara muka sentiasa awam dan abstrak sedangkan mereka tidak boleh diisytiharkan sebagai peribadi, dilindungi, akhir, statik, disegerakkan, asli dan ketat.
  • Anda tidak boleh mengisytiharkan apa-apa pembina di dalam antara muka sebagai tujuan utama pembina adalah permulaan pembolehubah kelas tetapi, dalam pembolehubah antara muka diinisikan pada masa perisytiharannya.
  • Antara muka boleh mewarisi antara muka yang lain tetapi, kelas yang melaksanakan antara muka tersebut mesti melaksanakan kaedah semua antaramuka yang diwarisi.
  • Kelas boleh mewarisi lebih daripada satu antara muka pada satu masa, dan ia mesti melaksanakan semua kaedah semua antaramuka yang diwarisi.

Bentuk umum melaksanakan antara muka di Jawa:

 kelas menggunakan kelas Interface_name {// class-body} 

Untuk mewarisi antara muka, kelas menggunakan kata kunci "melaksanakan", dan kelas melaksanakan semua kaedah yang diisytiharkan oleh antara muka yang diwarisi.

Antara muka dalam C #:

Antara muka dalam C # hampir serupa dengan antara muka di Java kecuali:

  • Antara muka dalam C # tidak mengisytiharkan pembolehubah.
  • Nama antara muka adalah prefixed dengan modal I dan diwarisi dengan tanda titik (:).

Bentuk umum melaksanakan antarmuka dalam C #:

 kelas class_name: interface_name {// class-body} 

Definisi Kelas Abstrak

Kelas yang mengandungi satu atau lebih kaedah abstrak dipanggil kelas abstrak, dan satu kelas dinyatakan sebagai abstrak menggunakan kata kunci "abstrak", didahului oleh kata kunci "kelas" pada permulaan deklarasi kelas. Oleh kerana kelas abstrak mengandungi kaedah abstrak ia menjadi jenis yang tidak lengkap. Oleh itu, anda tidak boleh membuat objek kelas abstrak. Apabila kelas mewarisi kelas abstrak, ia mesti melaksanakan semua kaedah abstrak kelas abstrak jika ia tidak kemudiannya mesti diisytiharkan sebagai abstrak. Abstrak sifat diwarisi sehingga pelaksanaan lengkap kaedah abstrak dicapai.

Kelas abstrak juga boleh mengandungi kaedah konkrit yang boleh digunakan oleh kelas yang diturunkan kerana ia adalah. Tetapi, anda tidak boleh mengisytiharkan pembina abstrak atau kaedah statik abstrak di dalam kelas abstrak. Bentuk umum kelas abstrak di Jawa adalah sebagai berikut:

 kelas kelas abstrak class_name {abstract method_name1 (); kaedah abstrak method_name2 (); : return_type method_name3 (parameter_list) {// method concrete} return_type method_name4 (parameter_list) {// method concrete}}; 

Konsep kelas abstrak adalah serupa di kedua Java dan C #. Kelas abstrak sedikit berbeza di C ++.

Dalam C ++ jika kelas sekurang-kurangnya mempunyai satu fungsi maya kelas menjadi kelas abstrak. Daripada kata kunci "abstrak", kata kunci "maya" digunakan untuk mengisytiharkan kaedah abstrak.

Perbezaan Utama Antara Antara Muka dan Kelas Abstrak di Java & C #

  1. Apabila anda mempunyai pengetahuan tentang "apa yang diperlukan" tetapi bukan "bagaimana ia akan dilaksanakan" maka antara muka mesti digunakan. Sebaliknya, jika anda tahu apa yang diperlukan dan sebahagiannya tahu bagaimana ia akan dilaksanakan maka gunakan kelas abstrak.
  2. Antara muka mempunyai semua kaedahnya abstrak tetapi, kelas abstrak mempunyai beberapa kaedah abstrak dan beberapa kaedah konkrit.
  3. Kaedah di dalam antara muka adalah umum dan abstrak, ia juga dipanggil sebagai kelas abstrak murni. Sebaliknya, kaedah di dalam abstrak tidak terhad kepada umum dan abstrak sahaja.
  4. Kaedah antara muka tidak boleh menjadi peribadi, dilindungi, akhir, statik, disegerakkan, asli atau ketat. Sebaliknya, tidak ada batasan untuk kaedah kelas abstrak.
  5. Pemboleh ubah dalam antara muka adalah umum dan muktamad sama ada kita mengisytiharkan mereka atau tidak, sedangkan tidak ada batasan seperti itu kepada pembolehubah kelas abstrak untuk menjadi awam dan akhir sahaja.
  6. Pembolehubah dalam antara muka tidak boleh dilindungi secara peribadi sementara atau tidak menentu sedangkan, tiada batasan untuk pembolehubah dalam kelas abstrak.
  7. Pembolehubah antara muka mestilah dimulakan semasa perisytiharan. Sebaliknya, pembolehubah dalam kelas abstrak boleh dimulakan pada bila-bila masa.
  8. Di dalam antara muka, contoh atau blok statik tidak boleh diisytiharkan tetapi, anda boleh mengisytiharkan contoh atau blok statik di dalam kelas abstrak.
  9. Anda tidak boleh menentukan pembina dalam antara muka sedangkan, anda boleh menentukan pembina dalam kelas abstrak.

Kesimpulan:

Apabila anda perlu membuat kelas asas yang mengandungi satu bentuk kaedah umum yang boleh dilaksanakan oleh kelas yang diturunkan mengikut keperluan mereka, konsep antara muka dan kelas abstrak membantu dalam berbuat demikian.

Top