Mis on liidese pärimine?

Liidese pärimine on teatud arvutikeelte mehhanism, kus teatud funktsioonid pärivad klass ja see konkreetne klass peab pakkuma nende funktsioonide teostused, et need oleksid täielikud. Liidesed eksisteerivad ainult teatud objektorienteeritud programmeerimiskeeltes. Neid saab kasutada mitme pärimise emuleerimiseks, kuid tegelikult ei luba klassil pärida, sest üldiselt pole klassi pärimise liideste arvul piiranguid. Lisaks rakendamata meetoditele võivad liidesed sisaldada ka avalikke konstante.

Liidese pärimise puhul loetakse objekti, mis pärib meetodi tünnid ja konstandid, liideseobjekti tüübiks. Seega, kui klass X päranduks liidesest Y, oleks klassi X iga eksemplar ka klassi Y eksemplar. See muutub keerulisemaks, kui klassi liidese pärand hõlmab rohkem kui ühte eraldi liidest. Iga päritud lisaliidese puhul saab saadud klassi õiguspäraselt kasutada igaühe eksemplarina. Kui klass oleks päritud kümnelt erinevalt liideselt, saaks selle klassi objekte kasutada üheteistkümne erineva objekti, sealhulgas iseenda eksemplarina.

Selline keeruline pärimine pole sageli vajalik. Liidese pärimist kasutatakse tagamaks, et klassil on konkreetne nõutavate käitumisviiside komplekt ja need käitumised võimaldavad tal täita mitmesuguseid funktsioone, mida ta muidu teha ei saaks. Selle levinud näide on Java ActionListeneri liides, mis nõuab, et klass rakendaks ainult ühte kindlat meetodit. Selle meetodi edukas rakendamine võimaldab kasutajal soovi korral juhtida nuppe, menüüüksusi või mõnda muud klassi aknaobjekti. Liidese pärimine on suhteliselt lihtne viis klassile keeruka funktsionaalsuse lisamiseks, ilma et peaksite muretsema kõige keerulisemate pärimisprobleemide pärast.

Liidese pärimise kasutamise üks suurimaid eeliseid on see, et see võimaldab kasutada konkreetseid objekte üldises tähenduses. Kuna liidest rakendav klass on selle liidese eksemplar, saab seda kasutada kõikjal, kus selle liidese eksemplari nõutakse. Näiteks kui klass A rakendab klassi C ja klass B rakendab ka klassi C, siis kui meetod võtab parameetrina klassi C eksemplari, oleks kas klassi A või klassi B eksemplar kasutamiseks vastuvõetav parameeter. . Liideseid ei saa iseseisvalt instantseerida, kuna need pole täielikud, seega poleks kunagi olemas objekti, mis oleks parameetrina puhtalt klassi C eksemplar.