Kotlin-klasse en objecten (met voorbeelden)

In dit artikel maak je kennis met Objectgeoriënteerd programmeren in Kotlin. U leert wat een klasse is, hoe u objecten kunt maken en deze in uw programma kunt gebruiken.

Kotlin ondersteunt zowel functionele als objectgeoriënteerde programmering.

Kotlin ondersteunt functies zoals functies van hogere orde, functietypen en lambda's, waardoor het een uitstekende keuze is om in functionele programmeerstijlen te werken. In latere hoofdstukken leert u over dit concept. Dit artikel gaat in op de objectgeoriënteerde stijl van programmeren in Kotlin.

Objectgeoriënteerd programmeren (OOP)

In een objectgeoriënteerde programmeerstijl kunt u een complex probleem opdelen in kleinere sets door objecten te maken.

Deze objecten hebben twee kenmerken:

  • staat
  • gedrag

Laten we een paar voorbeelden nemen:

  1. Lamp is een object
    • Het kan in- of uitgeschakeld zijn.
    • U kunt turn onen turn offlamp (gedrag).
  2. Fiets is een object
    • Het heeft huidige versnelling, twee wielen, aantal versnellingen etc. staten.
    • Het heeft rem-, acceleratie-, schakelen enz. Gedrag.

Je leert gaandeweg over de detailkenmerken van objectgeoriënteerd programmeren, zoals: data-inkapseling, overerving en polymorfisme. Dit artikel gaat in op de basisprincipes om de zaken eenvoudig te houden.

Aanbevolen literatuur: wat is een object?

Kotlin-klasse

Voordat u objecten in Kotlin maakt, moet u een klasse definiëren.

Een klasse is een blauwdruk voor het object.

We kunnen klasse zien als een schets (prototype) van een huis. Hierin staan ​​alle details over de vloeren, deuren, ramen etc. Op basis van deze beschrijvingen bouwen we het huis. Huis is het object.

Omdat er veel huizen kunnen worden gemaakt van dezelfde beschrijving, kunnen we veel objecten van een klasse maken.

Hoe definieer je een klas in Kotlin?

Om een ​​klasse in Kotlin te definiëren, wordt een classtrefwoord gebruikt:

 class ClassName (// eigenschap // lidfunctie…) 

Hier is een voorbeeld:

 class Lamp (// eigenschap (gegevenslid) privé var isOn: Boolean = false // lidfunctie fun turnOn () (isOn = true) // lidfunctie fun turnOff () (isOn = false))

Hier hebben we een klasse gedefinieerd met de naam Lamp.

De klasse heeft één eigenschap isOn (gedefinieerd op dezelfde manier als variabele), en twee lidfuncties turnOn()en turnOff().

Aanbevolen literatuur: Kotlin-functies

In Kotlin moet de eigenschap worden geïnitialiseerd of moet worden gedeclareerd abstract( bezoek: Kotlin Abstract Class voor meer informatie). In het bovenstaande voorbeeld is de eigenschap isOn geïnitialiseerd op false.

Klassen, objecten, eigenschappen, lidfunctie enz. Kunnen zichtbaarheidsmodificatoren hebben. De eigenschap isOn is bijvoorbeeld privé. Dit betekent dat de eigenschap isOn alleen kan worden gewijzigd vanuit de klasse Lamp.

Andere zichtbaarheidsmodificatoren zijn:

  • private - alleen zichtbaar (toegankelijk) vanuit de klas.
  • public - overal zichtbaar.
  • protected - zichtbaar voor de klasse en zijn subklasse.
  • internal - elke klant in de module heeft er toegang toe.

Je leert later over protecteden internalmodificatoren in het Kotlin-artikel over zichtbaarheidsmodificatoren.

Als u de zichtbaarheidsmodificator niet specificeert, is deze publicstandaard.

In het bovenstaande programma, turnOn()en lidfuncties turnOff()zijn public, terwijl de eigenschap isOn privé is.

Kotlin-objecten

Als klasse is gedefinieerd, wordt alleen de specificatie voor het object gedefinieerd; er is geen geheugen of opslag toegewezen.

Om toegang te krijgen tot leden die binnen de klasse zijn gedefinieerd, moet u objecten maken. Laten we objecten van de klasse Lamp maken.

 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 )

Dit programma maakt twee objecten l1 en l2 van klasse Lamp. De eigenschap isOn voor beide lampen l1 en l2 zal zijn false.

Hoe toegang krijgen tot leden?

U hebt toegang tot eigenschappen en lidfuncties van een klasse met behulp van .notatie. Bijvoorbeeld,

 l1.turnOn ()

Deze instructie roept de functie turnOn () aan voor object l1.

Laten we nog een voorbeeld nemen:

 l2.isOn = waar

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.
  • Vervolgens wordt een displayLightStatus()functie aangeroepen voor l1- en l2-objecten die het juiste bericht afdrukt, afhankelijk van of de eigenschap isOn waar is of false.

Merk op dat de eigenschap isOn wordt geïnitialiseerd falsebinnen de klasse. Wanneer een object van de klasse wordt gemaakt, wordt de eigenschap isOn voor het object falseautomatisch geïnitialiseerd . Het is dus niet nodig dat het l2-object de turnOff()eigenschap isOn aanroept false.

Bijvoorbeeld:

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

Wanneer u het programma uitvoert, is de uitvoer:

 lamp is uit.

Dit artikel is slechts een inleiding tot objectgeoriënteerd programmeren in Kotlin. Bekijk deze hoofdstukken op volgorde voor meer informatie:

  • Kotlin Constructors en Initializers
  • Kotlin dit trefwoord
  • Kotlin geneste klasse

Interessante artikelen...