Sažetak klase i sučelja u C #

Anonim

Sažetak klase izgleda puno kao sučelje, ali koncept je pomalo zbunjujuće za početnike OOP-a. Konceptualno, apstraktna klasa izgleda kao sučelje, naravno, bez ikakve provedbe, ali imaju njihov fer udio razlika. Dok se apstraktna klasa može djelomično ili potpuno implementirati, sučelje se mora provesti u potpunosti. Pa, najznačajnija razlika između ta dva je ta da apstraktna klasa može imati zadanu implementaciju, a sučelje je samo definicija metoda koja sadrži samo izjave članica. Razmotrimo teorijske aspekte detaljno.

Što je sažetak klase?

Sažetak je posebna vrsta klase koja služi kao baza drugih klasa i ne može se isticati. Logiku implementacije apstraktne klase osiguravaju izvedene klase. Da biste napravili klasu sažetak, upotrebljava se "apstraktni" modifikator, što znači da neka nedostajuća implementacija mora biti implementirana u razredu izvedenom iz nje. Sadrži i apstraktne i neakstraktne članove. Sažetak klase namijenjen je pružanju osnovne funkcionalnosti koja se može dalje dijeliti i nadjačati višestrukim izvedenim klase. Korisno je izbjeći bilo kakvu dupliciranost kodova. Izgledaju jako slično sučeljima, ali s dodatnom funkcionalnošću.

Što je sučelje?

Sučelje, s druge strane, nije klasa koja sadrži samo potpis funkcionalnosti. To je uzorak bez provedbe. Konceptualno, to je samo definicija metoda koja sadrži samo izjavu članova. To je prazna ljuska koja ne sadrži implementaciju svojih članova. To je kao apstraktni osnovni razred koji sadrži samo apstraktne članove kao što su metode, događaji, indekseri, svojstva itd. Ne može se izravno instanciirati i njezine članove može provoditi bilo koja klasa. Dodatno, više klasa može implementirati više sučelja, no klasa može naslijediti samo jednu klasu.

Sažetak klase vs sučelja: razlika između sažetak klase i sučelja u C #

  1. Više nasljedstva - Klasa može koristiti samo jednu abstraktnu klasu, stoga višestruka nasljednost nije podržana. Sučelje, s druge strane, može podržati više nasljedstva, što znači da klasa može naslijediti bilo koji broj nasljedstva.
  2. definicija od Sažetak klase i sučelja u C #- Sažetak je posebna vrsta klase koja može sadržavati definiciju bez provedbe. Logiku implementacije osigurava njena izvedena klasa. Može imati apstraktne i ne-apstraktne metode. Sučelje, s druge strane, samo je uzorak koji ne može ništa učiniti. Tehnički, to je samo prazna ljuska.
  3. izvršenje - Sažetak klase može sadržavati i definiciju i njegovu provedbu. To je nepotpuna klasa koja se ne može instanciirati. Sučelje može imati potpis funkcionalnosti bez ikakvog koda.
  4. Modifikatori pristupa - Sažetak klase može imati nekoliko modifikatora pristupa kao što su subs, funkcije, svojstva itd., Dok sučelje nije dopušteno imati modifikatore pristupa i sve se metode moraju implicitno definirati kao javne.
  5. Homogenost - Sažetak klase koristi se za implementaciju istog tipa, ponašanja i statusa, a sučelje se koristi za implementacije koje dijele samo potpise metoda.
  6. Deklaracija - Sažetak klasa djeluje kao osnovni razred za sve druge klase kako bi mogao proglasiti ili koristiti bilo koju varijablu dok sučelje nije dopušteno deklarirati bilo koju varijablu.
  7. Deklaracija konstruktora - Dok apstraktna klasa može imati izjavu konstruktora, sučelje ne može imati deklaraciju konstruktora.
  8. Core vs Peripheral - Sažetak klase koristi se za definiranje osnovnog identiteta klase i može se koristiti za objekte iste vrste podataka. S druge strane, sučelje se koristi za definiranje periferne sposobnosti klase.
  9. Rigidna naspram supstrata - Sažetak klasa je fleksibilniji u smislu funkcionalnosti, barem iz perspektive razvojnog programera, a sučelje je čvršće.

Sažetak klase vs sučelja: Tablica obrazac

Sažetak klasa

Sučelje

Sažetak klasa može imati sve modifikatore pristupa za deklaraciju članova funkcija, subs i svojstava. Sučelje nije dopušteno imati modifikatore pristupa za deklaraciju članova funkcija, subs, svojstava itd. Svi članovi se pretpostavljaju kao implicitno javni.
Klasa može najviše koristiti samo jednu apstraktnu klasu. Klasa može naslijediti bilo koji broj sučelja.
Višestruka nasljednost nije podržana u apstraktnoj klasi. Sučelje može podržati više nasljedstva.
Tehnički, to je klasa koja može ili ne mora sadržavati definiciju i njegovu provedbu. Sučelje može imati potpis funkcionalnosti tako da je u osnovi prazna ljuska.
Sažetak klase može sadržavati članove. konst, definirane metode i metode metode. Sučelje može sadržavati samo metode i konstante.
Ona definira temeljni identitet klase i koristi se za opisivanje objekata iste vrste podataka. Koristi se za opisivanje perifernih sposobnosti klase.
Članovi abstraktne klase ne mogu biti statični, osim ako nije potpuni član. Članovi sučelja ne mogu biti statični.
Idealna je za implementaciju iste vrste i zajedničkog ponašanja. Bolje je koristiti sučelja ako nekoliko implementacija dijeli samo potpise metoda.
Može imati deklaraciju konstruktora. Ne može imati izjavu konstruktora.
Sažetak klase ima unaprijed definirana polja i konstanti. Polja se ne mogu definirati u sučeljima.
Može imati i apstraktne i ne-apstraktne metode. Može imati samo apstraktne metode.

Sažetak

Koja je razlika između apstraktne klase i sučelja? Ovo je vjerojatno jedno od najčešćih pitanja postavljenih u bilo kojem tehničkom intervjuu. Vjerojatno ćete pronaći mnoštvo informacija o apstraktnim klasama i sučeljima u bilo kojem C # tutorialu, međutim razumijevanje razlike između njih dosta je teška. Možete objediniti sve informacije koje možete pronaći i još uvijek ne možete dobiti dovoljno. Pa, konceptualno oba su najvažniji pojmovi u programiranju i prilično su isti, međutim, oni se jako razlikuju po funkcionalnosti. Dok je apstraktna klasa posebna vrsta klase koja služi kao baza za druge klase, sučelje, s druge strane, samo je prazna ljuska sa samo članovima deklaracije.