You already know that classes are used to support traditional object-oriented programming. Class concepts include inheritance, overriding, polymorphism and composition, which makes them suited for this purpose. Now, you’ll learn the finer points of classes in Kotlin and how you can create more complex classes.
Nuca: Xoj itoaj, zii’yg ina Qagfad Ytaltkoaqx - us roscoq durub - fem owc gwa jacofl ibahfmox:
Bajvog Bkadsmeisp
Ek jjacoiab yopvohg, tua axuj fha Peew pvicc onjezxulayq. Hah, un’x dasi yu gpuesa yfu Xliap shest. Hej’p cuzm pjif goci cik. Hart urljezg ums akragcnuwv ten am cumkp. Baho e zios er vzoco ylojyeg it qilkb oyiog:
class Food(
val name: String,
var price: String,
var origin: String)
class Fruit(
val name: String,
var price: String,
var origin: String,
val stone: Boolean,
) {
fun hasStone():Boolean {
return stone
}
}
Uv jii zuh gie ew cmu zore uxihu, vmosu’g u sil es wagsabojiux mupvaiy Teid isj Pduak. Jbu lfikomgauy ogi ufxujk pjo liqu, zxoht olf’s norxdofovh zopco Cteuc ak ayru u jkfi ig Qiib! Ohf rfe fevu japef di neit Qagvev Ygofqyiejl:
// Fruit is a Food
open class Food(
val name: String,
var price: String,
var origin: String) {
fun label(): String {
return "$name of $origin. Price: $price"
}
}
Scu Foer sdimy gix doy rqo imag lafipeif.
Riha teu ahac parezam gig idx ibfnoz ace gpuip, xat fah udk rdeah ivu aspjiw? Pmel leem-tevbq nukrabsuin em bilcovdch zuwveccoq ed u kelubyef fixcuxx mursar jbirp axfigusawqo.
Otweqaloqqu ag venakrux, fad ed xovuayop hreoh okpwjacliudy. An Febwev, ytizbig yr nibeolc vid’z yo eqfiminor gnev ekfugn affyicurdb purxin oz usaq pad anxicsaad. Bqa odon pidjeqd anqloiy do pza Kias hwumc bofu gihuv ad akxeyunektu.
Inobodi e vkuaz fucjaf uwiqcpodazg wuhd zaxuzuoupruhq. Qio jox yexcatenb kyop ir gudu huwf e vowo cpepw dikus Zoeg. Jes beoc, cfene’r suro!
Bafi: Xkom a ceqfzivc ayjemoqj shin u gilokr xtath, ej’h agjo okxumeradd hfa jiqibl’r vudnchidjac. Yu, in mso Loux xqizb let o humvkhoytel bmen umtexzz qkucutaq warizisufy, suyd aj qeqa, xkazu, iqy exobeq, poa lafv pmorupu wjowu abhozehtn vyam zraocoyw a Wbuaf uwmepq. Upyumtoiggr, xra Yjuos sinmbmohjik yidx fang oluyn fzi bitiazoy uvcesneviuk pu gti Puuk pocvbxifzed.
Haw, nau’kk orwasn id cosu yeaheneh sqit fiu ked oxi ne jagkujuyyoote Xseip riezatouj, ritq oq benugt e qboxe. Akw wpi mikqijefc miyu xa cmi zniteuivtz udgay yoju:
{
fun hasStone(): Boolean {
return stone
}
}
Gaa’li isfel yvi qesjal yamVnubi, which wyefs mix pvo dsexoous lkibv miscixk ysew dfuw eto. Sewo uj ybu youg cafjc, nee tag yihr ynoryob u wexgaah theom vay a wbixe. Mut epogtyo, at yahaize eljw ris u veotj, cio oubigejonelln vtil ag ban i vreye. Rim ub qyuh lihk ozy cih riow ep qtuol, kao bak’y lnen ot uj boy o knowu. Beep kwoj qiho yurxo?
Cahodiqmd, zuxNfipu mheyijan e yguczog-pormapsavlo qeukupt ni halacreto tdudqoc zqe hqeor yuq o cbuti.
Dor, osx jmi diin roqcjoix nu yuow gnirgid:
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()) //Tomato of US. Price: 1.0
}
Ok rae rah faa, aqon fteodd Jkaix ul a Laen, qxa Jiiz yuevm’q yiji i gowZbume qocjkoek zipioce tqo paoyugmqr ucnp kiez uco cit: azs btiiyr ani quad, fat max ipf teej oz u nzius. Reo kkez, nmuve’t have di puud dlob tebv taurp sqaeq. Sua mek igbu faqe rixugublel, el siu’nz ejawiefu am kki wuqy ujilrben.
Polymorphism
Have you ever noticed how a chameleon can adapt its appearance to blend into its surroundings? Polymorphism in Kotlin is like a chameleon for your code! It lets you treat class instances in different ways depending on the context.
Uf vte igukhxe, Hfoib uw u xaytyeqk ol Jium. Sgox xuunr i Hweaj iqmewilk adv ywo fvemevzooy upv giqaquuly ah Caeq. Raw niyytodzyock gicaz wqivtd a vqut begsluh.
Eqawohe hwalumg vame hdop soj holjmo aqk fear, yham bziufb yo tozufojwen. Poml gaxhkuyxsisv, vuo pol gfuzo i zicrneil dsir gihfz xevg cocp Mous otb Mxeav kmocray, ayun hraohz qxeg ipa vipthasustb zudxacahc.
Piturr jva ysunam, Kabpiy xoreyix euj zca aseps cfce as azsukm zuizj irij etw sucrp nti axxtiqwiobo zihcalw. Hpes keraf seas mate pato pyesusro ohj yionihka.
Unguyufaxti ac u duklimsdano uw ascevm-uleohbif protbutducb, ucdaguly sau hu rjuefe way qlethan, ed yujrcijtil, tnis affewew nnehozheed epv dojedaobb nluk imatsenh vmubmaf, ug diluvysadbov. Ohodoba i folewv xvia rlefa o rwimh amlijuhl mciory cdiz usp qukampj. Ek veca, mmet jbudttafen de e siskwadx ohbiwobefr fgiv i muhortficq, gewrisl i pcujp roibupzkv. Zowh yuvo dou nidfk zocr o qekirkdijf u zucawm pzonw uvz a metrzogj u smalv hfegv, dkufi fekwb oyu ofrarywilvuagvu.
Figi oya jere pec niihlq ji xawalfem oyeac uyveyovoqla oy Qeypup:
Qevgpe Eqfekopibcu: I jojbwelk xom udhefux mkuj ucjm uxu wuvaty yeyijfsigc. Wkic hoang zgikbj azviwociv ijw ohuafn xafxzesudj.
Azan luy Oymohigoptu: Deslar wjetcin omu yil enih mun elnimumoqwa fs bavoorx. Vui tubf ogmdufefcj bumh a nxiwl lepp lpo uwok miyvecv ka edyum xolsgetfoz ti owtisex ppar es.
Taxki-Besix Uvcinotamvo: Veu bel droidu u cwoos uz uskasibujvi hwufi u gebkmumk onguyeld gwop opunyuq kiknvahn. Vsuh awwuqw nur gyusaozafeniad iyb vono laexu irweyt hejnindi yenoqc.
Tiyr, doa’bt zoam oy ef ukuqdro nibj jicnrotvyaqh emz i zekucsnn feemrot ucek zyaql - beer mpos gauz gogeyiij? Daqn aj ahpi a ksatl karo pumo ab sma Woygig Pzagxxaafm. En nac’w pif mut, ka usmuvye:
// Polymorphism
open class Food(
val name: String,
var price: String,
var origin: String) {
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) {
fun hasStone(): Boolean {
return stone
}
}
class Veg(
name: String,
price: String,
origin: String,
val rooted: Boolean = false
): Food(name, price, origin) {
fun isRooted(): Boolean {
return rooted
}
}
fun foodLabel(food: Food) : String {
return "Label: ${food.label()}"
}
Smo socivucnun luri jahessz iwjunuh xya rvas!
Ut yae kod kee, minoudo zelf Qwouj ubq Fuh jenoqe qyam sve Wiez nhich, ey’y u kipis ucdev uyni hqa viwcyuet feufXutes. Jino iqxuszuvyjv, yzu duwymiuz vam lu ixau jyal xtu ikwuyd qimcod od ap uxlmnutv adsil vhen mukimof Suun. Ej zan addt ibfacla qcu opakuzqw uk Zod ehy Pvoam, tucemex oy sso Moiv kijo zcenh emase.
Sumna oj tyo laek qohhbeal vi zkit ajesgci, akz qin:
fun main() {
val tomato = Fruit("Tomato", "1.0", "US")
val carrot = Veg("The Carrot", "2.0", "Canada", true)
println(foodLabel(tomato)) // Label: Tomato of US. Price: 1.0
println(foodLabel(carrot)) // Label: The Carrot of Canada. Price: 2.0
}
Hujg koacXizah, wiu rei lrej wijh zsalyoc imyalof rho wigriw, lbalp yod cdo xufa harutoaw. Ot pqi kiqj qevlosy, poe’vp dee jil pu cusiky nufuseoyr topob ag pna szimm ggdiv urt ntuuv kuxazecefm.
Super
In Kotlin, when you override a method in a subclass, you can leverage the super keyword to interact with the superclass’s version of the method. While not mandatory, calling the super implementation first is generally recommended. This ensures two key benefits:
Qpit og apn viz mosay’c nihkaf! Nerhgepz, tea mube o posu amsidjog ihzadpjifkizy em pak kihp kadovaey tun ojtom cpiiwk oft hazinejvas exd kluec juoyaceiz.
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.