Tässä artikkelissa tutustutaan olio-ohjelmointiin Kotlinissa. Opit mikä luokka on, kuinka luoda esineitä ja käyttää sitä ohjelmassa.
Kotlin tukee sekä toiminnallista että olio-ohjelmointia.
Kotlin tukee ominaisuuksia, kuten korkeamman asteen toimintoja, toimintotyyppejä ja lambdoja, mikä tekee siitä erinomaisen valinnan työskennellessä toiminnallisella ohjelmointityylillä. Opit näistä käsitteistä myöhemmissä luvuissa. Tämä artikkeli keskittyy olio-ohjelmointityyliin Kotlinissa.
Olio-ohjelmointi (OOP)
Objektikeskeisessä ohjelmointityylissä voit jakaa monimutkaisen ongelman pienempiin ryhmiin luomalla objekteja.
Näillä esineillä on kaksi ominaisuutta:
- osavaltio
- käyttäytymistä
Otetaan muutama esimerkki:
- Lamppu on esine
- Se voi olla päällä tai pois päältä.
- Voit
turn on
jaturn off
lamppu (käyttäytyminen).
- Polkupyörä on esine
- Siinä on nykyinen vaihde, kaksi pyörää, vaihteiden lukumäärä jne.
- Se käyttäytyy jarruttamalla, kiihdyttämällä, vaihdettaessa vaihdetta jne.
Opit olio-ohjelmoinnin yksityiskohdista, kuten tietojen kapseloinnista, perinnöstä ja polymorfismista. Tässä artikkelissa keskitytään perusasioihin pitämään asiat yksinkertaisina.
Suositeltava lukeminen: Mikä on esine?
Kotlin-luokka
Ennen kuin luot objekteja Kotlinissa, sinun on määritettävä luokka.
Luokka on objektin suunnitelma.
Voimme ajatella luokkaa luonnoksena (prototyyppi) talosta. Se sisältää kaikki yksityiskohdat lattiasta, ovista, ikkunoista jne. Näiden kuvausten perusteella rakennamme talon. Talo on esine.
Koska monia taloja voidaan valmistaa samasta kuvauksesta, voimme luoda monia esineitä luokasta.
Kuinka määritellä luokka Kotlinissa?
Luokan määrittelemiseksi Kotlinissa class
käytetään avainsanaa:
class ClassName (// ominaisuus // jäsenfunktio …)
Tässä on esimerkki:
luokka Lamppu (// ominaisuus (tietojäsen) yksityinen var isOn: Boolen = false // jäsenfunktio fun turnOn () (isOn = true) // jäsenfunktio fun turnOff () (isOn = false))
Tässä määriteltiin luokka nimeltä Lamp.
Luokalla on yksi ominaisuus isOn (määritelty samalla tavalla kuin muuttuja) ja kaksi jäsenfunktiota turnOn()
ja turnOff()
.
Suositeltava lukeminen: Kotlin toimii
Kotlinissa joko omaisuus on alustettava tai se on ilmoitettava abstract
( lisätietoja on osoitteessa Kotlin Abstract Class). Yllä olevassa esimerkissä isOn-ominaisuus alustetaan false
.
Luokat, objektit, ominaisuudet, jäsenfunktio jne. Voivat sisältää näkyvyyden muokkaajia. Esimerkiksi isOn-ominaisuus on yksityinen. Tämä tarkoittaa, että isOn-ominaisuutta voidaan muuttaa vain Lamp-luokan sisältä.
Muita näkyvyyden muokkaajia ovat:
private
- näkyvä (pääsee käsiksi) vain luokan sisältä.public
- näkyvissä kaikkialla.protected
- luokka ja sen alaluokka näkyvät.internal
- kuka tahansa moduulin sisällä oleva asiakas voi käyttää niitä.
Opit protected
ja internal
muokkaajista myöhemmin Kotlinin näkyvyysmuuttujien artikkelissa.
Jos et määritä näkyvyyden muokkaajaa, se on public
oletuksena.
Yllä olevassa ohjelmassa, turnOn()
ja turnOff()
funktiot ovat public
taas Ison ominaisuus on yksityinen.
Kotlin Objects
Kun luokka on määritelty, määritetään vain objektin määrittely; muistia tai tallennustilaa ei ole varattu.
Jos haluat käyttää luokassa määriteltyjä jäseniä, sinun on luotava objekteja. Luodaan Lamp-luokan esineitä.
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 )
Tämä ohjelma luo kaksi Lamp-luokan objektia l1 ja l2. Sekä lamppujen l1 että l2 isOn ominaisuus on false
.
Kuinka päästä jäseniin?
Voit käyttää luokan ominaisuuksia ja .
jäsenfunktioita merkintöjen avulla. Esimerkiksi,
l1.turnOn ()
Tämä lause kutsuu turnOn () -funktiota l1-objektille.
Otetaan toinen esimerkki:
l2.isOn = tosi
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()
anddisplayLightStatus()
. - 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 totrue
. - And,
turnOff()
function is called using l2 object:l1.turnOff()
. This method sets isOff instance variable of l2 object tofalse
. - Sitten
displayLightStatus()
funktio kutsutaan l1- ja l2-objekteille, jotka tulostavat sopivan viestin riippuen siitä, onko isOn-ominaisuus tosi vai vaifalse
.
Huomaa, että isOn-ominaisuus alustetaan false
luokan sisälle. Kun luokan objekti luodaan, objektin isOn-ominaisuus alustetaan false
automaattisesti. Joten l2-objektin ei tarvitse kutsua turnOff()
asettaa isOn-ominaisuudeksi arvoa false
.
Esimerkiksi:
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() )
Kun suoritat ohjelmaa, tulos on:
lamppu ei pala.
Tämä artikkeli on vain johdanto olio-ohjelmointiin Kotlinissa. Tarkista nämä luvut peräkkäin saadaksesi lisätietoja:
- Kotlinin rakentajat ja alustajat
- Kotlin tämä avainsana
- Kotlinin sisäkkäinen luokka