Perbedaan antara kelas abstrak dan antarmuka di C#

Perbedaan antara kelas abstrak dan antarmuka di C#

Kelas abstrak

Kelas abstrak adalah kelas yang dimaksudkan hanya untuk menjadi kelas dasar dari kelas lain. Pengubah 'Abstrak' digunakan untuk membuat kelas abstrak. Pengubah abstrak menunjukkan bahwa ada beberapa implementasi yang hilang yang perlu diimplementasikan di kelas yang berasal dari itu. Kelas abstrak dapat memiliki anggota abstrak dan non-abstrak. Kelas abstrak harus memiliki setidaknya satu metode abstrak, jika tidak, tidak ada penggunaan menyatakan bahwa kelas sebagai 'abstrak.'

Contoh kelas abstrak di C#:
Seperti yang ditunjukkan pada contoh di atas, metode abstrak 'area' di dalam kelas MyCircle ditimpa di kelas turunan myarea.

Antarmuka

Antarmuka hanya berisi deklarasi anggota termasuk metode, properti, peristiwa atau pengindeks. Itu tidak mengandung implementasi anggota ini. Kelas atau struct mengimplementasikan antarmuka, harus memberikan definisi metode yang dinyatakan dalam antarmuka. Itu berarti antarmuka menyediakan struktur standar yang perlu diikuti oleh kelas turunan.

Contoh antarmuka di C#:
Seperti yang ditunjukkan pada contoh di atas antarmuka mydata memiliki dua metode deklarasi getData () dan showData (). Kelas bernama yang menerapkan antarmuka ini harus memberikan definisi metode yang dinyatakan dalam antarmuka mydata.

Perbedaan antara kelas abstrak dan antarmuka

  1. Kelas abstrak dapat memiliki anggota abstrak dan non-abstrak. Tapi, dalam antarmuka, semua anggota secara implisit abstrak dan harus ditimpa di kelas yang diturunkan.
  2. Kelas dapat mewarisi beberapa antarmuka tetapi hanya satu kelas abstrak.
  3. Kelas abstrak dapat berisi metode dengan atau dengan definisi. Tapi, antarmuka hanya dapat berisi tanda tangan metode.
  4. Kelas abstrak dapat sepenuhnya, sebagian atau tidak diimplementasikan sama sekali, tetapi antarmuka harus sepenuhnya diimplementasikan, i.e., Semua anggota harus didefinisikan di kelas yang diturunkan.
  5. Antarmuka tidak dapat berisi pengubah akses, tetapi kelas abstrak dapat memilikinya untuk fungsi, properti atau acara.