Kotlino klasė ir objektai (su pavyzdžiais)

Šiame straipsnyje jūs supažindinsite su objektyviu programavimu Kotline. Sužinosite, kas yra klasė, kaip kurti objektus ir naudoti juos savo programoje.

Kotlin palaiko tiek funkcinį, tiek į objektą orientuotą programavimą.

„Kotlin“ palaiko tokias funkcijas kaip aukštesnio lygio funkcijos, funkcijų tipai ir „lambdas“, todėl tai puikus pasirinkimas dirbant funkciniu programavimo stiliumi. Apie šią koncepciją sužinosite vėlesniuose skyriuose. Šiame straipsnyje pagrindinis dėmesys bus skiriamas objektiniam programavimo stiliui Kotlin.

Objektinis programavimas (OOP)

Objektinio programavimo stiliaus sudėtingą problemą galite suskirstyti į mažesnius rinkinius kurdami objektus.

Šiems objektams būdingos dvi savybės:

  • valstija
  • elgesys

Paimkime keletą pavyzdžių:

  1. Lempa yra objektas
    • Jis gali būti įjungtas arba išjungtas.
    • Jūs galite turn onir turn offlempa (elgesys).
  2. Dviratis yra daiktas
    • Jis turi dabartinę pavarą, du ratus, pavarų skaičių ir kt.
    • Jis turi stabdymo, greitėjimo, greičių keitimo ir kt. Elgesį.

Sužinosite apie tokias detalesnes objektinio programavimo ypatybes, kaip: duomenų kaupimas, paveldėjimas ir polimorfizmas. Šiame straipsnyje pagrindinis dėmesys bus skiriamas pagrindams, kad viskas būtų paprasta.

Rekomenduojamas skaitymas: Kas yra objektas?

Kotlino klasė

Prieš kurdami objektus „Kotlin“, turite apibrėžti klasę.

Klasė yra objekto projektas.

Klasę galime laikyti namo eskizu (prototipu). Jame pateikiama visa išsami informacija apie grindis, duris, langus ir pan. Remdamiesi šiais aprašais mes pastatome namą. Namas yra objektas.

Kadangi daugelis namų gali būti pagaminti iš to paties aprašymo, galime sukurti daug objektų iš klasės.

Kaip apibrėžti klasę Kotline?

Norint apibrėžti klasę Kotlin, classnaudojamas raktinis žodis:

 class ClassName (// ypatybė // nario funkcija…) 

Štai pavyzdys:

 class Lamp (// nuosavybės (duomenų narys) privatus var isOn: Boolean = false // nario funkcija fun turnOn () (isOn = true) // nario funkcija fun turnOff () (isOn = klaidinga))

Čia mes apibrėžėme klasę, pavadintą „Lamp“.

Klasėje yra viena ypatybė isOn (apibrėžta taip pat, kaip kintamasis) ir dvi narių funkcijos turnOn()bei turnOff().

Rekomenduojamas skaitymas: Kotlino funkcijos

Kotlinas turi būti inicializuotas arba deklaruojamas turtas abstract( jei norite sužinoti daugiau, apsilankykite „ Kotlin Abstract Class“). Ankstesniame pavyzdyje ypatybė isOn inicijuojama false.

Klasės, objektai, savybės, narių funkcijos ir kt. Gali turėti matomumo modifikatorius. Pavyzdžiui, „isOn“ nuosavybė yra privati. Tai reiškia, kad „isOn“ ypatybę galima keisti tik iš „Lamp“ klasės.

Kiti matomumo modifikatoriai yra šie:

  • private - matomas (galima pasiekti) tik iš klasės vidaus.
  • public - matomas visur.
  • protected - matomas klasei ir jos poklasiui.
  • internal - prie jų gali prisijungti kiekvienas modulio klientas.

Sužinosite apie protectedir internalmodifikatoriai vėliau Kotlin matomumo modifikatorius straipsnį.

Jei nenurodysite matomumo modifikatoriaus, jis bus publicnumatytasis.

Pirmiau programą, turnOn()ir turnOff()valstybės funkcijos yra publickadangi Ison nuosavybė yra privati.

„Kotlin Objects“

Kai klasė apibrėžta, apibrėžta tik objekto specifikacija; nėra skirta atminties ar atminties.

Norėdami pasiekti klasėje apibrėžtus narius, turite sukurti objektus. Kurkime „Lamp“ klasės objektus.

 class Lamp ( // property (data member) private var isOn: Boolean = false // member function fun turnOn() ( isOn = true ) // member function fun turnOff() ( isOn = false ) ) fun main(args: Array) ( val l1 = Lamp() // create l1 object of Lamp class val l2 = Lamp() // create l2 object of Lamp class )

Ši programa sukuria du „Lamp“ klasės objektus l1 ir l2. Bus l1 ir l2 lempų savybė isOn false.

Kaip pasiekti narius?

Galite pasiekti klasės ypatybes ir narių funkcijas naudodami .žymėjimą. Pavyzdžiui,

 l1.turnOn ()

Šis sakinys iškviečia funkciją turnOn () l1 objektui.

Paimkime kitą pavyzdį:

 l2.isOn = tiesa

Here, we tried to assign true to isOn property of l2 object. Note that, isOn property is private, and if you try to access isOn from outside the class, an exception is thrown.

Example: Kotlin Class and Object

 class Lamp ( // property (data member) private var isOn: Boolean = false // member function fun turnOn() ( isOn = true ) // member function fun turnOff() ( isOn = false ) fun displayLightStatus(lamp: String) ( if (isOn == true) println("$lamp lamp is on.") else println("$lamp lamp is off.") ) ) fun main(args: Array) ( val l1 = Lamp() // create l1 object of Lamp class val l2 = Lamp() // create l2 object of Lamp class l1.turnOn() l2.turnOff() l1.displayLightStatus("l1") l2.displayLightStatus("l2") )

When you run the program, the output will be:

 l1 Lamp is on. l2 Lamp is off.

In the above program,

  • Lamp class is created.
  • The class has a property isOn and three member functions turnOn(), turnOff() and displayLightStatus().
  • Two objects l1 and l2 of Lamp class are created in the main() function.
  • Here, turnOn() function is called using l1 object: l1.turnOn(). This method sets isOn instance variable of l1 object to true.
  • And, turnOff() function is called using l2 object: l1.turnOff(). This method sets isOff instance variable of l2 object to false.
  • Tada displayLightStatus()iškviečiama funkcija l1 ir l2 objektams, kurie išspausdina tinkamą pranešimą, priklausomai nuo to, ar ypatybė isOn yra teisinga, ar false.

Atkreipkite dėmesį, kad ypatybė isOn inicijuojama falseklasės viduje. Kai sukuriamas klasės objektas, objekto „IsOn“ ypatybė inicijuojama falseautomatiškai. Taigi, norint iškviesti „l2“ objektą nebūtina turnOff()nustatyti savybę „isOn“ į false.

Pavyzdžiui:

 class Lamp ( // property (data member) private var isOn: Boolean = false // member function fun turnOn() ( isOn = true ) // member function fun turnOff() ( isOn = false ) fun displayLightStatus() ( if (isOn == true) println("lamp is on.") else println("lamp is off.") ) ) fun main(args: Array) ( val lamp = Lamp() lamp.displayLightStatus() ) 

Kai paleisite programą, išvestis bus:

 lempa neveikia.

Šis straipsnis yra tik įvadas į objektinį programavimą „Kotlin“. Norėdami sužinoti daugiau, paeiliui patikrinkite šiuos skyrius:

  • „Kotlin“ konstruktoriai ir iniciatoriai
  • Kotlinas šis raktinis žodis
  • Kotlino įdėta klasė

Įdomios straipsniai...