Preporučeno, 2024

Izbor Urednika

Razlika između apstraktne klase i sučelja u C #

Klasa sažetka
Apstraktna klasa je klasa koja je namijenjena samo za osnovnu klasu drugih klasa. "Apstraktni" modifikator koristi se za izradu sažetka razreda. Apstraktni modifikator ukazuje na to da postoji neka nedostajuća implementacija koju treba implementirati u klasu izvedenu iz nje. Apstraktna klasa može imati apstraktne i ne-apstraktne članove. Apstraktna klasa bi trebala imati barem jednu apstraktnu metodu, inače nema koristi od toga da se ta klasa proglasi "apstraktnom".

Primjer apstraktne klase u C #:

apstraktna klasa MyCircle {apstraktno javno int područje (); } Klasa MyArea: MyCircle {public override int Area () {strana za povratak *; .....}}
1 2 3 4 5 6 7 8 9 10 11apstraktna klasa MyCircle {apstraktno javno int područje (); } Klasa MyArea: MyCircle {public override int Area () {strana za povratak *;, , , , , }}

Kao što je prikazano u gornjem primjeru, apstraktna metoda 'Površina' unutar klase MyCircle je nadjačana u izvedenoj klasi MyArea.

Sučelje
Sučelje sadrži samo deklaraciju članova, uključujući metode, svojstva, događaje ili indeksatore. Ne sadrži provedbu tih članova. Klasa ili struktura implementira sučelje, mora osigurati definiciju metoda deklariranih u sučelju. To znači da sučelje pruža standardnu ​​strukturu koju izvedena klasa treba slijediti.

Primjer sučelja u C #:

pomoću System.Collections.Generic; pomoću System.Linq; pomoću System.Text; imenski prostor MyName {javno sučelje MyData {void getdata (); void showdata (); } public class NameData: MyData {javno dvostruko getdata () {string name; Console.WriteLine ("Unesite naziv:"); name = Console.ReadLine (); } public void showdata () {Console.WriteLine ("Moje ime je:", ime); }}}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22pomoću sustava. Zbirke. Generički; pomoću sustava. Linq; pomoću sustava. Tekst; imenski prostor MyName {javno sučelje MyData {void getdata (); void showdata (); } public class NameData: MyData {javno dvostruko getdata () {string name; Konzola . WriteLine ("Unesite ime:"); name = Konzola. ReadLine (); } javni void showdata () {Konzola. WriteLine ("Moje ime je:", ime); }}}

Kao što je prikazano u gornjem primjeru, sučelje MyData ima dvije deklaracije metoda getdata () i showdata (). Klasa NameData koja implementira ovo sučelje trebala bi dati definiciju metoda deklariranih u sučelju MyData.

Razlika između apstraktne klase i sučelja

  1. Apstraktna klasa može imati apstraktne i ne-apstraktne članove. No, u sučelju, svi članovi su implicitno apstraktni i moraju biti nadjačani u izvedenoj klasi.
  2. Klasa može naslijediti nekoliko sučelja, ali samo jednu apstraktnu klasu.
  3. Apstraktna klasa može sadržavati metode s ili s definicijom. No, sučelje može sadržavati samo potpis metode.
  4. Apstraktna klasa se može u potpunosti, djelomično ili uopće ne implementirati, ali sučelje treba u potpunosti implementirati, tj. Svi članovi moraju biti definirani u klasi deriving.
  5. Sučelje ne može sadržavati modifikatore pristupa, ali apstraktna klasa ga može imati za funkcije, svojstva ili događaje.
Top