Verskil tussen abstrakte klas en koppelvlak

Verskil tussen abstrakte klas en koppelvlak
Verskil tussen abstrakte klas en koppelvlak

Video: Verskil tussen abstrakte klas en koppelvlak

Video: Verskil tussen abstrakte klas en koppelvlak
Video: 🔴 RDD webinar: how to raise awareness among healthcare providers? 2024, Julie
Anonim

Abstract Class vs Interface

Abstract klas en Interface is twee objekgeoriënteerde konstrukte wat in baie objekgeoriënteerde programmeertale soos Java voorkom. Abstrakte klas kan beskou word as 'n abstrakte weergawe van 'n gewone (konkrete) klas, terwyl 'n koppelvlak beskou kan word as 'n manier om 'n kontrak te implementeer. Abstrakte klas is 'n klas wat nie geïnisialiseer kan word nie, maar kan uitgebrei word. Interface is 'n tipe wat deur ander klasse geïmplementeer moet word. In Java word Abstrakte klasse verklaar deur gebruik te maak van Abstrakte sleutelwoord, terwyl die koppelvlaksleutelwoord gebruik word om 'n koppelvlak te definieer.

Wat is 'n abstrakte klas?

Tipies kan Abstrakte klasse, ook bekend as Abstrakte Basisklasse (ABC), nie geïnstansieer word nie ('n instansie van daardie klas kan nie geskep word nie). Dus, Abstrakte klasse is slegs betekenisvol om te hê as die programmeertaal oorerwing ondersteun (vermoë om subklasse te skep deur 'n klas uit te brei). Abstrakte klasse verteenwoordig gewoonlik 'n abstrakte konsep of entiteit met gedeeltelike of geen implementering. Daarom tree abstrakte klasse op as ouerklasse waaruit kinderklasse afgelei word sodat die kinderklas die onvolledige kenmerke van die ouerklas sal deel en funksionaliteit bygevoeg kan word om dit te voltooi.

Abstrakte klasse kan abstrakte metodes bevat. Subklasse wat 'n abstrakte klas uitbrei, kan hierdie (oorgeërfde) abstrakte metodes implementeer. As die kinderklas al sulke Abstrakte metodes implementeer, is dit 'n konkrete klas. Maar as dit nie die geval is nie, word die kinderklas ook 'n Abstrakte klas. Wat dit alles beteken, is dat wanneer die programmeerder 'n klas as 'n opsomming nomineer, sy sê dat die klas onvolledig sal wees en dat dit elemente sal hê wat deur die oorerflike subklasse voltooi moet word. Dit is 'n goeie manier om 'n kontrak tussen twee programmeerders te skep, wat take in sagteware-ontwikkeling vergemaklik. Die programmeerder, wat kode skryf om te erf, moet die metodedefinisies presies volg (maar kan natuurlik haar eie implementering hê).

Wat is 'n koppelvlak?

'n Interface is 'n abstrakte tipe wat gebruik word om 'n kontrak te spesifiseer wat geïmplementeer moet word deur klasse, wat daardie koppelvlak implementeer. Die koppelvlak-sleutelwoord word gebruik om 'n koppelvlak te definieer en Implements-sleutelwoord word gebruik vir die implementering van 'n koppelvlak deur 'n klas (in Java-programmeertaal). Gewoonlik sal 'n koppelvlak slegs metode-handtekeninge en konstante verklarings bevat. Enige koppelvlak wat 'n spesifieke koppelvlak implementeer, moet alle metodes wat in die koppelvlak gedefinieer is, implementeer, of moet as 'n abstrakte klas verklaar word. In Java kan die tipe van 'n voorwerpverwysing as 'n koppelvlaktipe gedefinieer word. Maar daardie objek moet óf nul wees óf moet 'n objek van 'n klas bevat, wat daardie spesifieke koppelvlak implementeer. Deur Implemente-sleutelwoord in Java te gebruik, kan jy veelvuldige koppelvlakke in 'n enkele klas implementeer.

Wat is die verskil tussen Abstrakte Klas en Interface?

Abstrakte klasse verteenwoordig gewoonlik 'n abstrakte konsep of 'n entiteit met gedeeltelike of geen implementering. Aan die ander kant is 'n koppelvlak 'n abstrakte tipe wat gebruik word om 'n kontrak te spesifiseer wat deur klasse geïmplementeer moet word. Abstrakte klasse moet geërf (of uitgebrei) word, terwyl koppelvlakke geïmplementeer moet word. Abstrakte klasse kan abstrakte metodes bevat, terwyl 'n koppelvlak slegs abstrakte metodes moet bevat. Abstrakte klasse kan enige veranderlikes bevat, maar Interfaces kan slegs konstantes definieer. 'n Klas kan nie van meer as een abstrakte klas erf nie, maar kan veelvuldige koppelvlakke implementeer. 'n Interface kan nie 'n ander koppelvlak implementeer nie. 'n koppelvlak kan egter 'n klas uitbrei.

Aanbeveel: