Kotlin-klass och objekt (med exempel)

I den här artikeln presenteras du för objektorienterad programmering i Kotlin. Du lär dig vad en klass är, hur du skapar objekt och använder det i ditt program.

Kotlin stöder både funktionell och objektorienterad programmering.

Kotlin stöder funktioner som högre ordningsfunktioner, funktionstyper och lambdas vilket gör det till ett utmärkt val för att arbeta i funktionell programmeringsstil. Du kommer att lära dig mer om detta koncept i senare kapitel. Denna artikel kommer att fokusera på objektorienterad programmeringsstil i Kotlin.

Objektorienterad programmering (OOP)

I objektorienterad programmeringsstil kan du dela upp ett komplext problem i mindre uppsättningar genom att skapa objekt.

Dessa objekt delar två egenskaper:

  • stat
  • beteende

Låt oss ta några exempel:

  1. Lampa är ett objekt
    • Det kan vara i på eller av-tillstånd.
    • Du kan turn onoch turn offlampa (beteende).
  2. Cykel är ett objekt
    • Den har nuvarande växel, två hjul, antal växlar etc.
    • Den har bromsning, accelererar, byter växlar etc..

Du kommer att lära dig mer om detaljfunktioner i en objektorienterad programmering som: datakapsling, arv och polymorfism när vi fortsätter. Den här artikeln kommer att fokusera på grunderna för att göra det enkelt.

Rekommenderad läsning: Vad är ett objekt?

Kotlin-klass

Innan du skapar objekt i Kotlin måste du definiera en klass.

En klass är en ritning för objektet.

Vi kan tänka på klassen som en skiss (prototyp) av ett hus. Den innehåller alla detaljer om golv, dörrar, fönster etc. Baserat på dessa beskrivningar bygger vi huset. Huset är objektet.

Eftersom många hus kan göras från samma beskrivning kan vi skapa många objekt från en klass.

Hur definierar jag en klass i Kotlin?

För att definiera en klass i Kotlin används classnyckelord:

 klass Klassnamn (// egenskap // medlemsfunktion …) 

Här är ett exempel:

 class Lamp (// property (data member) private var isOn: Boolean = false // medlemsfunktion fun turnOn () (isOn = true) // medlemsfunktion fun turnOff () (isOn = false))

Här definierade vi en klass som heter Lamp.

Klassen har en egenskap isOn (definierad på samma sätt som variabel), och två medlemsfunktioner turnOn()och turnOff().

Rekommenderad läsning: Kotlin-funktioner

I Kotlin måste antingen fastigheten initieras eller deklareras abstract( besök: Kotlin Abstract Class för att lära sig mer). I exemplet ovan initialiseras egenskapen isOn till false.

Klasser, objekt, egenskaper, medlemsfunktion etc. kan ha synlighetsmodifierare. Till exempel är egenskapen isOn privat. Detta innebär att egenskapen isOn endast kan ändras från lampklassen.

Andra siktmodifierare är:

  • private - synligt (kan nås) inifrån klassen.
  • public - synlig överallt.
  • protected - synlig för klassen och dess underklass.
  • internal - alla klienter i modulen kan komma åt dem.

Du kommer att lära dig mer om protectedoch internalmodifiera senare i artikeln om Kotlin synlighetsmodifierare.

Om du inte anger synlighetsmodifieraren är det som publicstandard.

I ovanstående program turnOn()och turnOff()medlemsfunktioner är publicmedan egenskapen isOn är privat.

Kotlin-objekt

När klass definieras definieras endast specifikationen för objektet; inget minne eller minne lagras.

För att komma åt medlemmar som definierats inom klassen måste du skapa objekt. Låt oss skapa objekt av lampklass.

 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 )

Detta program skapar två objekt l1 och l2 i klass Lamp. Egenskapen isOn för både lampor l1 och l2 kommer att vara false.

Hur får jag tillgång till medlemmar?

Du kan komma åt egenskaper och medlemsfunktioner i en klass genom att använda .notering. Till exempel,

 l1.turnOn ()

Detta uttalande kallar turnOn () -funktionen för l1-objekt.

Låt oss ta ett annat exempel:

 l2.isOn = sant

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.
  • Sedan displayLightStatus()kallas funktion för l1- och l2-objekt som skriver ut lämpligt meddelande beroende på om isOn-egenskapen är sant eller false.

Observera att egenskapen isOn initialiseras till falseinne i klassen. När ett objekt i klassen skapas initialiseras isOn-egenskapen för objektet till falseautomatiskt. Så det är inte nödvändigt för l2-objekt att ringa för turnOff()att ställa in isOn-egenskap till false.

Till exempel:

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

När du kör programmet blir resultatet:

 lampan är släckt.

Den här artikeln är bara en introduktion till objektorienterad programmering i Kotlin. Kontrollera dessa kapitel i följd för att lära dig mer:

  • Kotlin konstruktörer och initialiserare
  • Kotlin detta nyckelord
  • Kotlin kapslad klass

Intressanta artiklar...