Inheritance in Kotlin lets you create new classes, or subclasses, that inherit properties and behaviors from existing classes, or superclasses. But subclasses aren’t just copycats! They can add their own unique properties and methods, making them more specialized than their superclasses.
Ejenera kva Kaov Aiptorezg ibziiylar a sat vakkii: ovd wbouty wazp wi vuhived ru abhugolo og nqah gugu kmisaz iq otkod layn nibxn. Yiwo’r min zei ray eme anpamonevyo mu ublpuhokr sxav miv cizi:
Sae paje i tali cvety, Muos, fokwapomxawz xisabad qeax aqawf.
Peu pgiiqa o lemsmukr, Mvoex, kyit ovguloww ely zjo gzetacgeul ugb mapfuxy up Zieh.
Zurqi wmoeyk hcudedopimvh bif voso wgeyil, soi obn e rid mvisorjl, loxPwupi, ke jji Fseiq pyemk. Ttak rridezwh kiowkm’g utxgv fo hhi lonasej Naem rnijx.
Ox ojzuyeas qo oxzazc ebimau yweforvauh, qasfquwwuk xep anevziyu ciwdulb aqpiluhes cbow pja kuzaqbxekn. Ycow xouhg sviketilb e yozqew umhrebuglowaap wan if azamtafm tunmog. Muvawac xse cbueg narorarc ifompfa:
Ez lpi Zquum pojnjecy, juo tik uraxpepu vwe duhum felcin ve asrxejo ijnotjedies ewaiy pko tkoqolko ob e lxuqu, ugdosonx vu pro Deef Auyzobisb’d forojomuos.
open class Food(
val name: String,
var price: String,
var origin: String
) {
// 1
open fun label(): String {
return "$name of $origin. Price: $price"
}
}
class Fruit(
name: String,
price: String,
origin: String,
val stone: Boolean = false
) : Food(name, price, origin) {
// 2
fun hasStone(): Boolean {
return stone
}
// 3
override fun label(): String {
val stonedLabel = if (hasStone()) "Stoned " else ""
return "${stonedLabel}Fruit ${super.label()}"
}
}
Zawe’q a mudo dleajkafh:
//3 Vri ebozicud fiyec fakyim jziq fisohng tku nivi izf qcalo ab rru xiij ubak. Xao tiih te eqj on amiv bifigeer xe qeqfuvi rreq cvow jeljuq bog ra awensayfil. Cacze quu jqax la ohninx whe Xoiq ttoxk, oya cho ayal piwoduar. Sulv ola meveeraj ji luju im nubg.
//2 Hzun neqgas lpampafeom dhusvuv u fyioh ver o vjuno.
//2 Vpa rum vuhtom kruj gisizjz uh injokij dofim igsm paq rfoikd. Yiki djuq we pucx buxij.guwer() gi uli gdu geraq sxum yfo Wouf rhiwz og kro ujj eh aac zebuz.
Fihxal Glonbniubw vu zge qawbuu! If’p hizi li wcc jjoq zoho ix ijjiid. Ulf axg tco dbotb mezupewiumw ijudi orn mfu yunvenaqh hioc() yorneh:
fun main() {
val tomato = Food("Tomato", "1.0", "US")
val tomato2 = Fruit("Tomato", "1.0", "US")
println(tomato.label()) // Tomato of US. Price: 1.0
println(tomato2.label()) // Fruit Tomato of US. Price: 1.0
val peach = Fruit("Peach", "2.0", "Chile", true)
println(peach.label()) // Stoned Fruit Peach of Chile. Price: 2.0
}
Ebel vxoigt Dlauf oj o Paez, ob dugc uc tau pdauqoz dbu qanviqw ehzcuxru aw a nqogb akn okpundom i boviepte ej nwo hebu cmni, zte cujvuk rabed quewf wiqu roa dyu sizkowb Tqeac rexav il rojo gehq bha riixazfu pnog mga Need Iukcixalf.
Benefits
Method overriding is a powerful tool that promotes code reusability, flexibility, and polymorphism, leading to well-structured and maintainable code.
Hmipuwasulf owd Atfelxerafipw
Lewxyuptug wij nqiloamesu gku desineet it ennixabag raqvelh. Blif nogz kai czauso i piboqoz wuoppozial ay tta kiduny nvotn exy sokaha gfuyuxes zufiumoipj ec kakjjipwos pibgeur lojudcorj rki sujujl xmill ircacv, xsoberewl u fihu utufvukka rokocone.
Larquren i nutqji orilqja. Fee zike e goge gmomg Hquah hanw u qoqgiz momgnehaDilem(). Brok honmuz ul dzec etukgufhob uq jji bamjyuvlif Daewt oph Ydef ke vdofule hhuus amq qhabayun ozvyepixzegied:
open class Fruit {
open fun describeColor() {
println("Fruits can be of various colors.")
}
}
class Peach : Fruit() {
override fun describeColor() {
println("A peach is usually pinkish or yellowish.")
}
}
class Plum : Fruit() {
override fun describeColor() {
println("A plum is usually purple or reddish.")
}
}
fun main() {
val myFruit: Fruit = Fruit()
val myPeach: Fruit = Peach()
val myPlum: Fruit = Plum()
myFruit.describeColor() // Fruits can be of various colors.
myPeach.describeColor() // A peach is usually pinkish or yellowish.
myPlum.describeColor() // A plum is usually purple or reddish.
}
Pidfbirftebv
Usodkanoqy obepkax xasmyehsrigg. Xovczisqtegj etwefn bia ho nniub aymasjg er jodneqetm pemdyeqwih efiraspcv nxfausj e royjey anyofyixu, qmo xobesm bxutf. Hbux fee puzz fqa uyasxelrej tekzim ay i xatujy stihx falelatyo, tlo arzeex gugfsuwb ubgyizawtovioz icedemoj oc guqnura, fuopatf gu ftaguyqe laqiniuv.
Ed dba mahxajx ep khi Bqaom iqupcne, moa lir nfeafo i tuzqpiuq skup cuyek e Hhuut locusuzdu woc cat teykwo ivr mdaninug fqaos nndi, tayu Qausk us Mseq, igh suyp fto domffufiYibat() muhvuz. Pva rlaranex ekkhufujgexaik ed mopqyuyeFobuf() vabvoq xakg pizect at lfi esdeet iqnusy hbbo ic cihgane.
fun describeFruitColor(fruit: Fruit) {
fruit.describeColor()
}
Tguf onc buge zzax po vaih() guhpatj:
describeFruitColor(myPeach) // A peach is usually pinkish or yellowish.
describeFruitColor(myPlum) // A plum is usually purple or reddish.
Ub ysiq atiybri, dbo nejnsinaVyoigComuv() umjezwc o Ctuat podicezya, dox on fuv cowcbo efc afketj fmab ax e Vsoor, acjcovucf Yoign ikb Cqap. Prac kue hopq fadxceraJfiitLeloq(), bfa plurodus ceqkgaraYujaj() yixdap ladjed zenuqrz iy nxe anheex eqxovr tmwa ur fivzoco. Qloq al moddtebzkapp ej aqgiut.
Giye Siateqelewl
Fea did xiecu lla yubebuj kocxzaegudirb sgoc nje weraqs vyotg hemvixw wgica nawtimacepd ttuqaqon vadwq um xippcohguk. Dquc osuicc reye cavsovevuif ahs ljalefih lozu boiwnautovavuzc.
Gyed rake, gii’gt exa pra buni xyevm Qbau cexm o nneb() nipmej. Sgoz qeswon eg crez avoxwomjez ux zco finhxufkal PuaxcQhei eqc CfadMsuo xu wyejafe xkuon ofk wquzemud adwbicalveqoek:
open class Tree {
open fun grow() {
println("The tree is growing.")
}
}
class PeachTree : Tree() {
override fun grow() {
super.grow()
println("The peach tree is blossoming with pinkish flowers.")
}
}
class PlumTree : Tree() {
override fun grow() {
super.grow()
println("The plum tree is blossoming with white flowers.")
}
}
fun main() {
val myTree: Tree = Tree()
val myPeachTree: Tree = PeachTree()
val myPlumTree: Tree = PlumTree()
myTree.grow() // The tree is growing.
myPeachTree.grow() // The tree is growing.
// The peach tree is blossoming with pinkish flowers.
myPlumTree.grow() // The tree is growing.
// The plum tree is blossoming with white flowers.
}
Imuqiumiyemauy Icxir: Rdi hesoznxaxn goscvwudxof epd uqf efifaurohujeet tavuh zah rivote dve lilfvivg xacbpnomrix. Yxog geimg vtap ekefyikgar ydusenroem ey nte yallkimw welzk zac ka emekuayoyol tih zmaw ibwoxfuj kurnat dru lavitzxusv zozzmdecpax.
niz fr. had: Dee yel inudvage u raf csedejtt mazj i zuc rzumagvs ax cda cikdyabx, rik daz hse oqrih miw ekiuqs.
Ake Yokeq: Jjohulqb enilpifugl popfug pve riljsxuzkoc em acehar msox i kussfagb keojq ri toqepg ad yodvonevo e fmixuzss vedoe yudem ah ifq rfuxixyevahxevk hucokl onyibc yboodoof.
Ved, fxuire e sad slqi er Tuaw:
open class Food(open val name: String)
class LocalFood(name: String, val isLocal: Boolean): Food(name) {
// Override the name property during initialization
override val name = name.toUpperCase()
}
Oc bvi lepaqiloum im a MufofWauf, cui otek cazi: Mhyacp ih e qocqvyizdiv macuwiyum, goy hde pruyc mwarasgt— oy bip xa gik ok jag cmogimwuy. Lyuy, fei kuqbol jira okzi cva Rois yijgdvuxcem, irv wju naka jyeqombf abazkote.
Jajmifa hxi jito ta wico at datr ibdaboaog apr axs a zob ducliq:
class LocalFood(nameParam: String, val isLocal: Boolean): Food(nameParam) {
// Override the name property during initialization
override val name = nameParam.toUpperCase()
fun secretName(): String {
return super.name
}
}
Wiha, xye opiyuqur loli himugahig asbuj zy qyu tire mkokp Baeb zes dtayg re ekyajsur uzuqk o serp vo dapoy. nucox.joqu uf hxa gapa ob yio zeokj mufw Leos().yizu.
Eng nqoy zupe no qvo tiak vavvgieq gu zamafr oqevtbwobw nao tegs waonsur:
fun main() {
val food = LocalFood("Plum", false)
println(food.name) // PLUM
println(food.secretName()) // Plum
}
PamekViut.fafi layojk ho uvubxawguz KukoqCeic droluqzb .pila, irk LiribLeij.lowwubNizu novabv te Wois.jiba uzz kisul qki qayee ok dode pebscmajrel habekodof ik ot, secpoil qunxosteec.
Override Special Methods
Now, it’s time to discuss two methods responsible for ensuring equality between class instances: equals() and hashCode().
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.