Kelas abstrak adalah kelas yang dimaksudkan hanya untuk menjadi kelas dasar dari kelas lain. Pengubah 'abstrak' digunakan untuk membuat abstrak kelas. Pengubah abstrak menunjukkan bahwa ada beberapa implementasi yang hilang yang perlu diimplementasikan di kelas yang diturunkan darinya. Kelas abstrak dapat memiliki anggota yang abstrak dan non-abstrak. Kelas abstrak harus memiliki setidaknya satu metode abstrak, jika tidak, tidak ada gunanya menyatakan kelas itu sebagai 'abstrak.'
Contoh Kelas Abstrak dalam C #:
kelas abstrak MyCircle {abstrak public int Area (); } Kelas MyArea: MyCircle {public override int Area () {sisi pengembalian * sisi; .....}}1 2 3 4 5 6 7 8 9 10 11 | kelas abstrak MyCircle {abstrak public int Area (); } Kelas MyArea: MyCircle {public override int Area () {sisi pengembalian * sisi; . . . . . }} |
Seperti ditunjukkan dalam 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 sebuah antarmuka menyediakan struktur standar yang harus diikuti oleh kelas turunan.
Contoh Antarmuka dalam C #:
menggunakan System.Collections.Generic; menggunakan System.Linq; menggunakan System.Text; namespace MyName {antarmuka publik MyData {void getdata (); membatalkan showdata (); } public class NameData: MyData {public double getdata () {nama string; Console.WriteLine ("Masukkan nama:"); name = Console.ReadLine (); } public void showdata () {Console.WriteLine ("Nama saya adalah:", nama); }}}1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | menggunakan Sistem. Koleksi Generik; menggunakan Sistem. Linq; menggunakan Sistem. Teks; namespace MyName {antarmuka publik MyData {void getdata (); membatalkan showdata (); } public class NameData: MyData {public double getdata () {nama string; Konsol. WriteLine ("Masukkan nama:"); nama = Konsol. ReadLine (); } public void showdata () {Console. WriteLine ("Nama saya:", nama); }}} |
Seperti yang ditunjukkan pada contoh di atas, antarmuka MyData memiliki dua metode getdata () dan showdata (). Kelas NameData yang mengimplementasikan antarmuka ini harus memberikan definisi metode yang dinyatakan dalam antarmuka MyData.
Perbedaan Antara kelas Abstrak dan Antarmuka
- Kelas abstrak dapat memiliki anggota abstrak maupun non-abstrak. Tetapi, dalam sebuah antarmuka, semua anggota secara abstrak tersirat dan harus ditimpa dalam kelas turunan.
- Kelas mungkin mewarisi beberapa antarmuka tetapi hanya satu kelas abstrak.
- Kelas abstrak dapat berisi metode dengan atau dengan definisi. Tapi, antarmuka hanya bisa berisi metode tanda tangan.
- Kelas abstrak dapat sepenuhnya, sebagian atau tidak diimplementasikan sama sekali, tetapi sebuah antarmuka harus sepenuhnya diimplementasikan, yaitu, semua anggota harus didefinisikan dalam kelas turunan.
- Antarmuka tidak dapat berisi pengubah akses, tetapi kelas abstrak dapat memilikinya untuk fungsi, properti, atau acara.