Kotlina klase un objekti (ar piemēriem)

Šajā rakstā jūs iepazīstināsiet ar objektorientētu programmēšanu Kotlinā. Jūs uzzināsiet, kas ir klase, kā izveidot objektus un izmantot to savā programmā.

Kotlin atbalsta gan funkcionālu, gan objektorientētu programmēšanu.

Kotlin atbalsta tādas funkcijas kā augstāka līmeņa funkcijas, funkciju tipus un lambdas, kas padara to par lielisku izvēli darbam funkcionālā programmēšanas stilā. Jūs uzzināsiet par šo jēdzienu nākamajās nodaļās. Šis raksts koncentrēsies uz objektorientētu programmēšanas stilu Kotlinā.

Objektorientēta programmēšana (OOP)

Objektorientētā programmēšanas stilā jūs varat sadalīt sarežģītu problēmu mazākās kopās, izveidojot objektus.

Šiem objektiem ir divas īpašības:

  • Valsts
  • uzvedība

Ņemsim dažus piemērus:

  1. Lampa ir objekts
    • Tas var būt ieslēgts vai izslēgts.
    • Jūs varat turn onun turn offlampa (uzvedība).
  2. Velosipēds ir objekts
    • Tam ir pašreizējais pārnesums, divi riteņi, pārnesumu skaits utt.
    • Tam ir bremzēšanas, paātrināšanas, pārnesumu pārslēgšanas utt. Uzvedība.

Jūs uzzināsiet par detalizētām objektorientētas programmēšanas iezīmēm, piemēram: datu iekapsulēšanu, mantošanu un polimorfismu, kā mēs turpinām. Šis raksts koncentrēsies uz pamatiem, lai viss būtu vienkārši.

Ieteicamā literatūra: Kas ir objekts?

Kotlina klase

Pirms Kotlin izveidojat objektus, jums jādefinē klase.

Klase ir objekta projekts.

Mēs varam uzskatīt klasi par mājas skici (prototipu). Tajā ir visa informācija par grīdām, durvīm, logiem utt. Pamatojoties uz šiem aprakstiem, mēs būvējam māju. Māja ir objekts.

Tā kā daudzas mājas var izgatavot, izmantojot to pašu aprakstu, mēs varam izveidot daudz priekšmetu no klases.

Kā noteikt klasi Kotlinā?

Lai definētu klasi Kotlinā, classtiek izmantots atslēgvārds:

 class ClassName (// rekvizīts // dalībnieka funkcija…) 

Lūk, piemērs:

 klases lampa (// rekvizīta (datu dalībnieka) privātais var isOn: Būla = nepatiesa // dalībnieka funkcija fun turnOn () (isOn = true) // dalībnieka funkcija fun turnOff () (isOn = nepatiesa))

Šeit mēs definējām klasi ar nosaukumu Lamp.

Klasei ir viens rekvizīts isOn (definēts tāpat kā mainīgais) un divas dalībnieka funkcijas turnOn()un turnOff().

Ieteicamā literatūra: Kotlina funkcijas

Kotlīnā vai nu īpašums ir jāinicializē, vai arī tas jādeklarē abstract( lai uzzinātu vairāk, apmeklējiet Kotlinas abonēšanas klasi). Iepriekš minētajā piemērā isOn rekvizīts tiek inicializēts false.

Klasēm, objektiem, īpašībām, dalībnieka funkcijai utt. Var būt redzamības modifikatori. Piemēram, isOn īpašums ir privāts. Tas nozīmē, ka rekvizītu isOn var mainīt tikai no lampu klases.

Citi redzamības modifikatori ir:

  • private - redzams (var piekļūt) tikai no klases iekšpuses.
  • public - redzams visur.
  • protected - redzama klasei un tās apakšklasei.
  • internal - jebkurš moduļa klients var tiem piekļūt.

Par to protectedun internalmodifikatoriem uzzināsiet vēlāk Kotlin redzamības modifikatoru rakstā.

Ja nenorādīsit redzamības modifikatoru, tas būs publicpēc noklusējuma.

Iepriekš programmā, turnOn()un turnOff()biedru funkcijas ir publictā īpašums ISON ir privāts.

Kotlina objekti

Kad klase ir definēta, tiek definēta tikai objekta specifikācija; nav piešķirta atmiņa vai krātuve.

Lai piekļūtu klases dalībniekiem, jums ir jāizveido objekti. Veidosim Lamp klases 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 )

Šī programma izveido divus Lamp klases objektus l1 un l2. Īpašība isOn būs gan lukturiem l1, gan l2 false.

Kā piekļūt dalībniekiem?

Jūs varat piekļūt klases īpašībām un dalībnieka funkcijām, izmantojot .apzīmējumus. Piemēram,

 l1.turnOn ()

Šis paziņojums izsauc funkciju turnOn () objektam l1.

Ņemsim vēl vienu piemēru:

 l2.isOn = taisnība

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.
  • Pēc tam displayLightStatus()tiek izsaukta funkcija l1 un l2 objektiem, kas izdrukā atbilstošu ziņojumu atkarībā no tā, vai rekvizīts isOn ir patiess vai nav false.

Ievērojiet, ka rekvizīts isOn tiek inicializēts falseklases iekšienē. Kad tiek izveidots klases objekts, objekta isOn rekvizīts tiek inicializēts falseautomātiski. Tātad, lai izsauktu objektu l2, nav nepieciešams turnOff()iestatīt rekvizītu isOn uz false.

Piemēram:

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

Palaidot programmu, izeja būs:

 lampa ir izslēgta.

Šis raksts ir tikai ievads uz objektorientētu programmēšanu Kotlinā. Pārbaudiet šīs nodaļas secīgi, lai uzzinātu vairāk:

  • Kotlina konstruktori un inicializētāji
  • Kotlin šo atslēgvārdu
  • Kotlina ligzdotā klase

Interesanti raksti...