Š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:
- Lampa ir objekts
- Tas var būt ieslēgts vai izslēgts.
- Jūs varat
turn on
unturn off
lampa (uzvedība).
- 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ā, class
tiek 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 protected
un internal
modifikatoriem uzzināsiet vēlāk Kotlin redzamības modifikatoru rakstā.
Ja nenorādīsit redzamības modifikatoru, tas būs public
pēc noklusējuma.
Iepriekš programmā, turnOn()
un turnOff()
biedru funkcijas ir public
tā ī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()
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
. - 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 navfalse
.
Ievērojiet, ka rekvizīts isOn tiek inicializēts false
klases iekšienē. Kad tiek izveidots klases objekts, objekta isOn rekvizīts tiek inicializēts false
automā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