
Java i ririmi ro sungula leri ndzi ri dyondzeke entirhweni wa mina. Xivumbeko xa yona i xa masungulo eka malembe ya mina yo sungula yo twisisa miehleketo ya minongonoko. Endzhaku ko hundza eka tindzimi tin’wana to hlayanyana leti nga ni maendlelo yo hambana swinene, ndzi ndlandlamuxe vonelo ra mina. Namuntlha, ndzi lava ku anakanyisisa hi mianakanyo ya ndzhaka .
Eka Java, mianakanyo ya ndzhaka yi fambisana swinene ni mianakanyo ya ku thayipa hi ndlela leyitsongo . Ku thayipa ehansi i ku tirhisiwa ka vuxaka bya IS A. Xikombiso, ntlawa wa Rabbit
i muxaka lowuntsongo wa ntlawa wa Mammal
. Ku sukela sweswi, xikombiso Rabbit
xi na mahanyelo hinkwawo ya Mammal
: xi dya ndzhaka ya mahanyelo.
Hikwalaho ka leswi, u nga hundzisa xikombiso Rabbit
loko ndlela yi vitana parameter Mammal
kumbe u vuyisa xikombiso Rabbit
loko muxaka wo vuyisa ndlela wu ri Mammal
. Loko u dyondze Java, .Net, kumbe nchumu wun’wana ni wun’wana lowu fanaka hi le kule, hi yona ndlela leyi u vonaka ndzhaka ha yona, naswona yi hundzuka ntolovelo lowuntshwa.
I ndzhaka leyi nga erivaleni .
class Animal { void feed(); } class Rabbit extends Animal { //1 }
Rabbit
IS A
Animal
, yi nga feed()
Loko ndzi sungula ku languta Go, ndzi hlamarile leswaku a yi na subtyping kasi ya ha nyika ndzhaka. Go yi tirhisa ku thayipa ka tidada:
Loko yi languteka ku fana ni nkuku, yi hlambela ku fana ni nkuku, naswona yi quack ku fana ni nkuku, kutani kumbexana yi tano.
Loko Go struct
yi tirhisa mintirho leyi fanaka na interface, hi ku kongoma yi tirhisa interface.
type Animal interface { feed() //1 } type Rabbit struct { } func (rabbit Rabbit) feed() { //2 // feeds }
Animal
dyafeed()
wu kona lowu tekaka Rabbit
tanihi parameter, Rabbit
yi tirhisa Animal
Ndzi nga yi tsakeli Go hi endlelo ra yona ro khoma swihoxo, kambe a ndzi ri na miehleketo yimbirhi mayelana na ku tirhisiwa loku nga kongomangiki. Hi tlhelo rin’wana, ndzi swi twisisile leswaku a ku ri mianakanyo leyintshwa, naswona ndzi ringete ku tshama ndzi pfulekile; hi hala tlhelo, ndzi ehleketa leswaku swilo swi tshama swi antswa ku va swi ri erivaleni ku tlula leswi nga kongomangiki, hambi ku ri eka nhluvukiso wa software kumbe evuton’wini bya xiviri.
Python i ririmi ro tsakisa swinene leri ndzi ri tivaka mayelana na ndzhaka.
Ku thayipa ehansi na ndzhaka leyi simekiweke eka muxaka swi vile kona eka Python ku sukela loko yi sunguriwile.
class Animal: def feed(self): #1 pass #2 class Rabbit(Animal): #3 pass
Animal
dyaRabbit
IS A
Animal
, yi nga feed()
Eka mhaka leyi, Python yi tirha ku fana na Java hi tlhelo ra ndzhaka. Python yi tlhela yi nyikela hi ku thayipa ka tidada, leswi ndzi swi hlamuseleke tanihi tindlela ta masalamusi . Xikombiso, ku endla nchumu lowu nga vuyeleriwaka , xikombiso , lowu nga vuyisaka muvuyeleri , u lava ntsena ku tirhisa __iter__()
na __next__()
:
class SingleValueIterable(): done = False def __init__(self, value): self.value = value def __iter__(self): #1 return self def __next__(self): #1 if self.done: raise StopIteration else: self.done = True return self.value svi = SingleValueIterable(5) sviter = iter(svi) #2 for x in sviter: print(x) #3
Iterator
- Pythons yi tiva njhani ku sukela loko hi tirhise tindlela leti nga laha henhla5
Xiphiqo xa endlelo leri ro thayipa ra tidada hi leswaku ri tirha ntsena eka tindlela ta masalamusi leti hlamuseriweke ka ha ri emahlweni ta Python. Ku vuriwa yini loko u lava ku nyikela tlilasi leyi munhu wa vunharhu a nga kumaka ndzhaka eka yona hi ku kongoma?
class Animal: def feed(): pass class Rabbit: def feed(): pass
Eka xiphemu lexi nga laha henhla, Rabbit
is not an Animal
, leswi hi hlundzukiseke ngopfu. Nghenisa PEP 544 , leyi nga na nhlokomhaka leyi nge Tiphurotokholo: Ku thayipa ka xivumbeko lexitsongo (ku thayipa ka tidada leti nga cinciki). PEP yi tlhantlha ku nga koteki ka ku hlamusela tindlela ta masalamusi eka titlilasi ta hina. Yi hlamusela tlilasi yo olova Protocol
: loko se u dya ndzhaka eka yona, tindlela leti hlamuseriweke eka tlilasi ti faneleka ku thayipa tidada, hikokwalaho ka vito ra - ku thayipa ka tidada loku nga cinciki.
from typing import Protocol class Animal(Protocol): #1 def feed(): #2 pass class Rabbit: def feed(): #2 pass class VenusFlytrap: def feed(): #2 pass
Protocol
Animal
i Protocol
, tlilasi yin’wana na yin’wana leyi hlamuselaka feed()
yi hundzuka Animal
, ku antswa kumbe ku bihaMinongonoko leyi kongomisiweke eka swilo, ndzhaka, na ku thayipa hi swilo leswitsongo swi nga ha va na tinhlamuselo to karhi leti nga hundzuluxeliki eka tindzimi tin’wana, ku ya hi ririmi ro sungula leri u ri dyondzaka. Java yi tinyungubyisa tanihi ririmi leri kongomisiweke eka Swilo naswona yi nyikela phasela leri heleleke. Go a hi ririmi ra OO, kambe ra ha nyika subtyping hi ku tirhisa duck typing. Python yi nyika ndzhaka leyi nga erivaleni na leyi nga kongomangiki kambe ku hava swihlanganisi.
U dyondza ririmi lerintshwa ra minongonoko hi ku ri pimanisa ni (ti)ririmi leri se u ri tivaka. Ku tiva swihlawulekisi swa ririmi i xilotlelo xo tsala khodi ya xivulavulelo hi ririmi leri u kongomisiweke eka rona. Titolovete swihlawulekisi leswi nga riki kona eka tindzimi ta wena leti u ti tivaka: swi ta ndlandlamuxa ku twisisa ka wena ka minongonoko hi ku angarhela.
Yana emahlweni:
Eku sunguleni yi kandziyisiwile eka A Java Geek hi January 26th, 2025