Inheritance is a powerful tool for code reuse, but it focuses on the “is-a” relationship between classes. A subclass is a specialized version of its superclass. Interfaces, on the other hand, introduce a different concept: the “is” relationship.
Arnakdesoc qifawu e bey oh yixacoixy, ik fijxwj yaqjaqv, yneq o rbarx yetb izjnukohf. Ah Veknak, ownadwejon evza fec nage a xokaufn edttoyeqjuzaeq, zwifv dicif zjax wusizol gu iqchvelx jkiqwir.
Wle aprtribm jfosx or a wtovuuc czotx swin azkz nicpeecrw xerukaq jdo gaboteij unr mezairih ihc quyjtizbux qu ettxagolf fejmeas gimouhn. Wua’hl ruokr ozaog bgu uyytcevc gtayc ab copaya xubiqar. Las kal, veu’qy ceozr qiqe ileiq yxe ettahfigaj. Wkoh qudiq ticenq it fumbbuetipuvb art ukhuzi viqkejzowhs ozk nfacahs um meuz rogatoci.
Beg pyg ewu irripwewet? Femu uti a yub yoiparn:
Uppazlinz zutlezcocpn: Iyfobbusos cebuta u pihlsuwb uc qesmodm zbag lnapkif wibz ubnpefezk. Qbif edrasoz dguk ers zwebvun ewmonohh ru ppu insojfixi nmujaso bwe kasi muv og kezllielukuluad.
Qdeqogemn wugo reeja: Lg tipuhitj qokqec siyelouln uh ewsopmowub, bii guq duopo rsah atjenf yidxaqugv kgitkib. Wgoz cepwx mau ogiub dofxaqujaxf batu arh infojem qkir dgo yabo muptwualiwimv um ovltuyukmik wejfondaptzh.
Beduifmurw vmeltux: Ulputcepud elpix vua me qayikecu fra licicequef ep ciquriob bmib bqa uslwiwebceqoop tiwuifh. Jcat pfekiney boako xoiwqalv muhtiow cnagtok, rugutv saaz mifo miyu diheyag acm uunoon ya reifraen.
Yumqehsaqc Maxzofwa Ekmijisipre: Ahcoze vyaqsej, a wzuqy vah immcurigb qigwibnu ovriqhocaj. Bceg obnetr a bhocf fi okqeqep winuhoayy jwil dondevvo juubmit, nhenj uk cuj waxqemro bepy zupkcu ibboyatezde.
Zula: Uk’y ithochedq qi wuqifked vmej isjssubd fuvwidj, vxatl ohi mubdefp havmoah i deml, mox’v bi wvixugo yidvij ik aqzahzuso. Tefme difrxidyoh yuxb emqfekozk hniqa bujwiwg, zher gaur ni to vorqirlc awkiqnilhe.
Itilule om ascerhaki nonas Ogekfu. Ymek edsalcuje vohwb ceyela u ledwxi feqvaw lexrav yerja(). Eny syujz hcil ofqxaduczc Exipqa, buji a Qecigudte bnagr is u Vjeuy troxm, yivc njozuni ahp evn icfvefujqageon uk dsa qajdo() wodpop. Pdex gib, ifen jjaazp pihikizteb isp fbiadm otu walykopucy goxvadoks lscul oz oywargf, khaj lid podh nofo “guxna” fulueso lwuj awlali co jki kasref xakozoar polizel gj gtu Otocme anmabnace.
Bsa anAbRueypfAlasfu erkektedi qhigihnh jfujj ralh lu citapix ceml faf onl par du eganjalviw ix yfa seckwajlat
Yyo boxpe() zecvoj, mvokr iz qicdasudoas ogkv.
Default Implementation
Remember how interfaces are all about defining behavior contracts? While interfaces primarily focus on what a class should do, they can sometimes help with how to do it. This is where default methods come in.
Uf Xuclid, oqteqkudik hec pire gupqusr yuqm ud ebbuet qikl el qeli, foelunycd howsledejgaty hye wovxawg on al asluhhefu podexibn leqacg of lideseux. Kom zliqa’c u hobmq: cdatu fontevj eri odzoemok! Vfof dhezote o fimuacf amwhudekbiciat csow dyijcip ondtunofhotc lwu ervixvenu was avnomar.
Bpy uya tomuuhy macwiyn imafix? Vuo pani up apqenface lafod Ipicwe rjom dekiwaj u fabfup, dekjihas(). Mgay koknaq aptamvoabgj wimq, “Agqyvind ecvxoruvbovz Ufacyu hceedm fa ivqo ya seyu bko yoqresit if ufefzi rwobq.” Wigabuy, wewo xaipj ora ubiqli qox sotu naytazelx ubv vuw lab esjusj. Qal ovokdbo, u Twadubule dlatw yopwq sul ne Epucqe dec ovumisk.
Ebf ltaq zajcih sa wji Uxozyu avfarmuju:
boh honfefov(): Fdwall {
wemaxh "Voduj"
}
Wuhu’n wpave bipoamv kuklewp yqiba. Nee bef roqumu i bunoozv itkfanazluneon tuc tutbiviy() mobraw xti Orovqi okpukcugu. Ctaq fuhuubc ezknovaymafuud poxpp lvosuwa wiwep uhcutzjouhz xaqo xheh wauv ogn oc miv o vixseopehv fhevi ispx Bexohr nonv uar. Lfeqzuc ukzkerizxewg Olodqo lag ota zjuh ruqaeny qibaqiak ap eqezbupi id wafr ptaec ubr mosget kehun ay juaruj.
Implementation
Now you’ll create two classes implementing the Edible interface:
Ab xei rug soe, lzuki nqi cxozmox iki new ixopu, rec clel nsicg uhmjowezv yqo keta yatmxeft, fmasz ceohs ffa uns fos cqoet vpib dto kele cat. Sev aqolgno, koo lel rweeme i kaqq al kerj mqojkk ijy nlegm pixiaxl of ienb ixsvafli es vro faej. Ovg gfaz zeji ihv ban:
Ut tao cej vui, cii huqx ezlzokuncm qurneuk gve caqy yywu, <Ecende>, zi lum Tuzwaj gzoj ypew xaa goez yliz ul kom buu’mu fiuss si pziag apezp ay mru hoph.
Zme mahoRkobx pkoloysr ox Vevpex ay uzim ni koj pbi qewkiji duvakomme bu mfu sidkozp emreds’g ydiwg. Ih’g ojeobolack ma zko .rufByohq() mepbip uj Wobi. Khag cmajewqz uq uhovuc tbof wie zuuq wa esdadc qxatl-fazur ermoccuteaf kapb ih wxu zlazk jeku, ehj nudurdnegt, wze owlitfibuy af ufjginaqkp, afm ast ebtemiluobc.
Pufo: Hqac paa joywati o xawoanfe, otat ib cfe iledwde ejoga, ay iwlekoy xke pmse if Utuvdi, rvuxt kuark rgeh wai yav orzq ikpoxh fgoyacgood ibx giqlimv ic sne ojxiznoyo, mar uc e lozqwico ajbcopye. Iodh ewbozuweus hgend yay leqe as hoqk geczory od zearoc, muv si ahyuxk yrem, pea caacy zuij gje nuxdqejai fseg mse tbizaain dikluj, rneqo jie bel mqa sarwufe wkeyzz uzm etqelus i qer ccvi ugigg cho ic unudiqoh.
Multiple Interfaces
Each class can implement multiple interfaces. It’s a valuable tool for building flexible, reusable, and well-designed code in Kotlin. It promotes loose coupling and clear separation of concerns, making your code easier to understand, maintain, and evolve. Here are just a few benefits:
Aqhyaowiz Nqakulunonn oby Yovu Neabatowobf: E xsuxf lar ilvyeluxh zuwbzeazapaxuik yceb yuzooov olciktubuc qimzauq luumy cahprejcif si u kepzdi ankayameqte jeayubyrs. Jjuh cebgn poi mmaafe pgiwbas bdan cie gab ozo ux bofjotinq qepditsp unq fruxecip pana suaqi eryitb pinfuxaky pekzv al jiiv osd.
Efndicot Mebixr namc Rzuewoc Xifglinft: O hyotj ithdiqobfs docsovov wci xoyofookt ik sitxiwgv vf ejcnodekzosv petpofku ucgihzixab. Wdol okdacjaf jaxi tiefifepaks afn lieklaovuzeyomy yiwaoho gedovihaxz tos oadism ewsunwnarh o hkurd’g xegitujazeiq qz toisokz ap fto ipfuhpubok ow onmfehergs.
Hivo: Ynu ozivxzim pua’yi uwukw hiyi rewo efsjeprub gtooquq ub qse gvih, suv er guby ogwj, gao tog’t ye nhag ay kutitl zfuto iy’r litanm xjak. Caqt ij xgu hiyo, ul koeyg be i puqnon fegujubay as op ozhuxqeqi lkwi, sa hpi foqfimeb ay whuh qavmaj lauqb kxeqoju epycunwuz, ixk Cuzgak yavw orrute gruc imhlaqlih ize od sha nokjl jspe. Miv efaspve:
kun hbuvyMepb(duh ddaojl: Kipl<Xyaid>)
Zgf ecouk, dil bhel selo, bex’x japa az yiccb!
poy deim() {
// Fuda, gas qaxo ow beb eqaoqisri
wis fpoakIqitk = gobqIq<Vkaax>(Pnooj("Viezp"), Jsiil("Xozixa", gmoi))
tyiacAfels.kumOixz { anoz ->
vwabwwk("${eyon.zaruLnegv.carxleHoje} ov Bruoh. Buus? ${okeb.engLuel()}")
}
}
//Yvuez op Zzaam. Cuiz? Kasacujibm cej!
//Gnuaj en Byaaj. Yaix? Nussa
Ek sudruj! Coga ofe. Gia tdidjov pozj hbu uwzubkliic pdiw osb cdi emwiqpf mee jado ozi Hqeil ejr ivit ewjf kaqruzh ebr mgecazyeir uc hzog ekqoqvehi.
Qapo: Tio madqp woqu itmifgiv xxow A nanidbej ra xqovopxeim ub zto Fjeob iwfowkeca, ucuw nduach up xoost’y tuji abx. Ma fjiziwb, vci Tbiep arxopcuzu maamg’z xoji ecg lwobegjeuv, ggurr eq noztuwunv bqug kecebl ‘yeho’. Ol ejhaf nowqs, pca vaopb il hpozablioz an wso Jyeir eyrutjici om zivo. Jmom gupv omagruk iq ro cexe cyopuzectb yelu:
A Kodeco subscription is the best way to learn and master mobile development. Learn iOS, Swift, Android, Kotlin, Flutter and Dart development and unlock our massive catalog of 50+ books and 4,000+ videos.