Kotlinov razred in predmeti (z primeri)

V tem članku se boste seznanili z objektno usmerjenim programiranjem v Kotlinu. Izvedeli boste, kaj je razred, kako ustvariti predmete in ga uporabiti v svojem programu.

Kotlin podpira tako funkcionalno kot objektno usmerjeno programiranje.

Kotlin podpira funkcije, kot so funkcije višjega reda, vrste funkcij in lambda, zaradi česar je odlična izbira za delo v funkcionalnem slogu programiranja. O teh konceptih boste izvedeli v poznejših poglavjih. Ta članek se bo osredotočil na objektno usmerjen slog programiranja v Kotlinu.

Objektno usmerjeno programiranje (OOP)

V objektno usmerjenem slogu programiranja lahko zapleten problem razdelite na manjše množice z ustvarjanjem predmetov.

Ti predmeti imajo dve značilnosti:

  • država
  • vedenje

Vzemimo nekaj primerov:

  1. Svetilka je predmet
    • Lahko je v vklopljenem ali izklopljenem stanju.
    • Lahko turn onin turn offsvetilka (vedenje).
  2. Kolo je predmet
    • Ima trenutno prestavo, dve kolesi, število prestav itd.
    • Ima zavorno, pospeševalno, menjalno prestavo itd.

Spoznali boste podrobne značilnosti objektno usmerjenega programiranja, kot so: inkapsulacija podatkov, dedovanje in polimorfizem. Ta članek se bo osredotočil na osnove, s katerimi bodo stvari preprostejše.

Priporočeno branje: Kaj je predmet?

Kotlinov razred

Preden v Kotlinu ustvarite predmete, morate definirati razred.

Razred je načrt predmeta.

Razred si lahko predstavljamo kot skico (prototip) hiše. Vsebuje vse podrobnosti o tleh, vratih, oknih itd. Na podlagi teh opisov gradimo hišo. Hiša je objekt.

Ker je iz istega opisa mogoče izdelati veliko hiš, lahko iz razreda ustvarimo veliko predmetov.

Kako definirati razred v Kotlinu?

Za določitev razreda v Kotlinu classse uporablja ključna beseda:

 class ClassName (// lastnost // funkcija člana…) 

Tu je primer:

 class Lamp (// lastnost (podatkovni član) private var isOn: Boolean = false // funkcija člana fun turnOn () (isOn = true) // funkcija člana fun turnOff () (isOn = false))

Tu smo definirali razred z imenom Lamp.

Razred ima eno lastnost isOn (definirano na enak način kot spremenljivka) in dve funkciji člana turnOn()in turnOff().

Priporočeno branje: Kotlin funkcije

V Kotlinu je treba lastnost inicializirati ali pa jo prijaviti abstract( če želite izvedeti več, obiščite: Kotlin Abstract Class). V zgornjem primeru je lastnost isOn inicializirana v false.

Razredi, predmeti, lastnosti, funkcija člana itd. Imajo lahko modifikatorje vidnosti. Lastnost isOn je na primer zasebna. To pomeni, da je lastnost isOn mogoče spremeniti samo znotraj razreda Lamp.

Drugi modifikatorji vidnosti so:

  • private - vidno (dostopno) samo znotraj predavanja.
  • public - vidna povsod.
  • protected - viden razredu in njegovemu podrazredu.
  • internal - do njih lahko dostopa vsak odjemalec znotraj modula.

O protectedin internalmodifikatorjih boste izvedeli kasneje v članku Kotlin modifikatorji vidnosti.

Če ne določite modifikatorja vidnosti, bo publicprivzeto.

V zgornjem programu turnOn()in turnOff()funkcije člana so, publicmedtem ko je lastnost isOn zasebna.

Predmeti Kotlin

Ko je definiran razred, je definirana samo specifikacija predmeta; ni dodeljenega pomnilnika ali pomnilnika.

Če želite dostopati do članov, opredeljenih v razredu, morate ustvariti predmete. Ustvarimo predmete razreda Lamp.

 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 )

Ta program ustvari dva predmeta l1 in l2 razreda Lamp. Lastnost isOn za obe sijalki l1 in l2 bo false.

Kako dostopati do članov?

Do lastnosti in funkcij člana razreda lahko dostopate z uporabo .zapisa. Na primer

 l1.turnOn ()

Ta stavek za objekt l1 pokliče funkcijo turnOn ().

Vzemimo še en primer:

 l2.isOn = res

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.
  • Nato displayLightStatus()se za predmete l1 in l2 pokliče funkcija, ki natisne ustrezno sporočilo, odvisno od tega, ali je lastnost isOn resnična ali false.

Upoštevajte, da je lastnost isOn inicializirana falseznotraj razreda. Ko je predmet razreda ustvarjen, se lastnost isOn za objekt falsesamodejno inicializira . Torej ni nujno, da objekt l2 kliče, turnOff()da nastavi lastnost isOn na false.

Na primer:

 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() ) 

Ko zaženete program, bo rezultat:

 lučka ugasne.

Ta članek je le uvod v objektno usmerjeno programiranje v Kotlinu. Če želite izvedeti več, zaporedoma preverite ta poglavja:

  • Kotlinovi konstruktorji in inicializatorji
  • Kotlin to ključno besedo
  • Kotlin gnezdeni razred

Zanimive Članki...