Java ke leleme la mathomo leo ke ithutilego lona mošomong wa-ka. Sebopego sa yona ke sa motheo nywageng ya ka ya mathomo ya go kwešiša dikgopolo tša mananeo. Ka morago ga go feta malemeng a mangwe a mmalwa ao a nago le mekgwa e fapanego kudu, ke katološitše pono ya-ka. Lehono, ke nyaka go naganišiša ka kgopolo ya bohwa .
Bohwa ka Java
Kua Java, kgopolo ya bohwa e kopantšwe ka go tia le kgopolo ya go thaepa ka tlase . Subtyping ke phethagatšo ya kamano ya IS A. Mohlala, sehlopha Rabbit
ke mohuta wa ka fasana wa sehlopha sa Mammal
. Go tloga fao, mohlala Rabbit
o na le boitshwaro ka moka bja Mammal
: o ja bohwa bja boitshwaro.
Ka lebaka la se, o ka fetiša mohlala Rabbit
ge mokgwa o bitša paramethara Mammal
goba wa bušetša mohlala Rabbit
ge mohuta wa go bušetša mokgwa e le Mammal
. Ge e ba o ithutile Java, .Net, goba selo le ge e le sefe se se swanago kgole, ke kamoo o bonago bohwa ka gona, gomme e ba selo se sefsa se se tlwaelegilego.
Ke bohwa bjo bo lego molaleng .
class Animal { void feed(); } class Rabbit extends Animal { //1 }
- Ka ge
Rabbit
IS A
Animal
, o kafeed()
Bohwa ka Go
Ge ke be ke thoma go lebelela Go, ke ile ka makatšwa ke gore ga e na subtyping mola e sa fana ka bohwa. Go e šomiša go thaepa ga matata:
Ge e bonala bjalo ka letata, e sesa bjalo ka letata, gomme e quack bjalo ka letata, gona mohlomongwe e bjalo.
Ge e le gore struct
sa Go se phethagatša mešomo ye e swanago le ya segokanyimmediamentsi sa sebolokigolo, se phethagatša segokanyimmediamentsi sa sebolokigolo ka go se kwagale .
type Animal interface { feed() //1 } type Rabbit struct { } func (rabbit Rabbit) feed() { //2 // feeds }
-
Animal
e ka fepa - Ka lebaka la gore mošomo
feed()
o gona wo o tšeagoRabbit
bjalo ka paramethara,Rabbit
o phethagatšaAnimal
Ke dira go se rate Go ka mokgwa wa yona wa go swara diphošo, eupša ke be ke na le menagano ye mebedi mabapi le phethagatšo ye e sa kwagalego. Ka lehlakoreng le lengwe, ke ile ka kwešiša gore e be e le kgopolo e mpsha, gomme ke ile ka leka go dula ke bulegile monaganong; ka lehlakoreng le lengwe, ke nagana gore dilo di dula di le kaone ka go lebanya go feta ka go se kwagale, e ka ba tlhabollong ya disoftware goba bophelong bja kgonthe.
Lefa ka Python
Python ke leleme le le kgahlišago kudu leo ke le tsebago mabapi le bohwa.
Go thaepa ka fase le bohwa bjo bo theilwego godimo ga mohuta di bile gona ka go Python go tloga mola e hlongwago.
class Animal: def feed(self): #1 pass #2 class Rabbit(Animal): #3 pass
-
Animal
e ka fepa - Ga go na diklase tša go se hlalošege goba didirišwa tša go dirišana ka go Python, ke diklase fela
- Ka ge
Rabbit
IS A
Animal
, o kafeed()
Mabapi le se, Python e šoma go swana le Java go ya ka bohwa. Python gape e nea go thaepa ga matata, e lego seo ke se hlalositšego e le mekgwa ya maleatlana . Mohlala, go dira selo se sengwe seo se ka boeletšwago , mohlala , seo se ka bušetšago poeletšo , o swanetše go phethagatša fela __iter__()
le __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
- Mekgwa ya go thaepa ya matata
- Hlama
Iterator
- Pythons e tseba bjang ga e sa le re phethagatša mekgwa ye e lego ka mo godimo - Kgatišo
5
Bothata bja mokgwa wo wa go thaepa wa matata ke gore o šoma fela go mekgwa ya maleatlana yeo e hlalošitšwego e sa le pele ya Python. Go thwe’ng ge e ba o nyaka go nea sehlopha seo motho wa boraro a ka abelago go sona ka mo go sa kwagalego?
class Animal: def feed(): pass class Rabbit: def feed(): pass
Karolwana ye e lego ka mo godimo, Rabbit
ga se Animal
, e lego seo se re nyamišago kudu. Tsenya PEP 544 , yeo e nago le sehlogo se se rego Diprothokhole: Go thaepa ga sebopego sa ka fasana (go thaepa ga matata a go se fetoge). PEP e rarolla go se kgonege ga go hlaloša mekgwa ya maleatlana bakeng sa diklase tša rena. E hlaloša sehlopha se bonolo Protocol
: ge o šetše o abetše bohwa go tšwa go yona, mekgwa yeo e hlalošitšwego ka sehlopheng e ba yeo e swanelegago go thaepa matata, ke ka fao leina - go thaepa ga matata a go se fetoge.
from typing import Protocol class Animal(Protocol): #1 def feed(): #2 pass class Rabbit: def feed(): #2 pass class VenusFlytrap: def feed(): #2 pass
- Lefa go tšwa go
Protocol
- Ka lebaka la gore
Animal
keProtocol
, sehlopha sefe goba sefe seo se hlalošagofeed()
e fetogaAnimal
, go kaone goba go mpe
Mafetšo
Mananeo ao a lebanego le selo, bohwa le go thaepa ka fase di ka ba le ditlhalošo tše di itšego tšeo di sa fetolelego malemeng a mangwe, go ya ka leleme la mathomo leo o ithutago lona. Java e itlhalosa bjalo ka leleme leo le lebanego le Selo gomme e fana ka sephuthelwana se se feletšego. Go ga se polelo ya OO, eupša e sa fana ka go thaepa ka fase ka go thaepa ga matata. Python e fana ka bobedi bohwa bjo bo lego pepeneneng le bjo bo sa kwagalego eupša ga go na didirišwa tša go dirišana.
O ithuta leleme le lefsa la mananeo ka go le bapetša le (di)leo o šetšego o le tseba. Go tseba diponagalo tša polelo ke senotlelo sa go ngwala khoutu ya dikapolelo ka polelo ya gago yeo o e nepišitšego. Itlwaetše dikarolo tšeo di sego gona ka malemeng a gago ao o a tsebago: di tla katološa kwešišo ya gago ya mananeo ka kakaretšo.
Tswela pele:
Mathomong e phatlaladitšwe go A Java Geek ka la 26 Pherekgong, 2025