Kelas abstrak adalah satu yang bertujuan untuk menjadi kelas asas kelas-kelas lain. Pengubah 'abstrak' digunakan untuk membuat abstrak kelas. Pengubah abstrak menunjukkan bahawa terdapat beberapa pelaksanaan yang hilang yang perlu dilaksanakan dalam kelas yang diperoleh daripadanya. Kelas abstrak boleh mempunyai ahli yang abstrak dan tidak abstrak. Kelas abstrak sepatutnya mempunyai sekurang-kurangnya satu kaedah abstrak, jika tidak, tidak ada penggunaan mengisytiharkan bahawa kelas sebagai 'abstrak.'
Contoh Kelas Abstrak dalam C #:
kelas abstrak MyCircle {Kawasan Abstrak awam abstrak (); } Kelas MyArea: MyCircle {awam mengatasi int Area () {side side * return; .....}}1 2 3 4 5 6 7 8 9 10 11 | kelas abstrak MyCircle {Kawasan Abstrak awam abstrak (); } Kelas MyArea: MyCircle {awam mengatasi int Area () {side side * return; . . . . . }} |
Seperti yang ditunjukkan dalam contoh di atas, kaedah 'Abstrak' di dalam kelas MyCircle digariskan dalam kelas MyArea yang diturunkan.
Antara muka
Antara muka mengandungi hanya perisytiharan ahli termasuk kaedah, sifat, peristiwa atau pengindeks. Ia tidak mengandungi pelaksanaan ahli-ahli ini. Satu kelas atau struct melaksanakan antara muka, mesti memberikan definisi kaedah yang diisytiharkan dalam antara muka. Ini bermakna antara muka menyediakan struktur piawai yang diperlukan oleh kelas yang diperolehi.
Contoh Antara Muka dalam C #:
menggunakan System.Collections.Generic; menggunakan System.Linq; menggunakan System.Text; ruang nama MyName {muka umum MyData {void getdata (); void showdata (); } kelas awam NamaData: MyData {public double getdata () {string name; Console.WriteLine ("Masukkan nama:"); name = Console.ReadLine (); } public showdata void () {Console.WriteLine ("Nama saya:", 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; ruang nama MyName {muka umum MyData {void getdata (); void showdata (); } kelas awam NamaData: MyData {public double getdata () {string name; Konsol. WriteLine ("Masukkan nama:"); name = Console. ReadLine (); } public showdata void () {Console. WriteLine ("Nama saya:", nama); }}} |
Seperti yang ditunjukkan dalam contoh di atas, antara muka MyData mempunyai dua deklarasi kaedah getdata () dan showdata (). NamaData kelas yang melaksanakan antara muka ini harus memberikan definisi kaedah yang diisytiharkan dalam antara muka MyData.
Perbezaan Antara kelas Abstrak dan Antara Muka
- Kelas abstrak boleh mempunyai abstrak serta ahli bukan abstrak. Tetapi, dalam antara muka, semua ahli secara implisit abstrak dan mesti ditindih dalam kelas yang diturunkan.
- Kelas boleh mewarisi beberapa antara muka tetapi hanya satu kelas abstrak.
- Kelas abstrak boleh mengandungi kaedah dengan atau dengan definisi. Tetapi, antara muka hanya boleh mengandungi tandatangan kaedah.
- Kelas abstrak boleh sepenuhnya, sebahagiannya atau tidak dilaksanakan sama sekali, tetapi antara muka harus dilaksanakan sepenuhnya, iaitu semua ahli mesti ditakrifkan dalam kelas pengambilan.
- Antara muka tidak boleh mengandungi pengubah akses, tetapi kelas abstrak boleh memilikinya untuk fungsi, sifat atau peristiwa.