În acest articol, veți fi introdus în programarea orientată pe obiecte în Kotlin. Veți afla ce este o clasă, cum să creați obiecte și să o utilizați în programul dvs.
Kotlin acceptă atât programarea funcțională, cât și cea orientată pe obiecte.
Kotlin acceptă funcții precum funcții de ordin superior, tipuri de funcții și lambdas, ceea ce îl face o alegere excelentă pentru lucrul în stil de programare funcțional. Veți afla despre aceste concepte în capitolele ulterioare. Acest articol se va concentra pe stilul de programare orientat pe obiecte din Kotlin.
Programare orientată pe obiecte (OOP)
În stilul de programare orientat pe obiecte, puteți împărți o problemă complexă în seturi mai mici prin crearea de obiecte.
Aceste obiecte împărtășesc două caracteristici:
- stat
- comportament
Să luăm câteva exemple:
- Lampa este un obiect
- Poate fi activat sau oprit.
- Puteți
turn on
și vețiturn off
aprinde (comportamentul).
- Bicicleta este un obiect
- Are angrenaj curent, două roți, număr de angrenaje etc.
- Are un comportament de frânare, accelerare, schimbare a vitezelor etc.
Veți afla despre caracteristicile detaliate ale unei programări orientate pe obiecte, cum ar fi: încapsularea datelor, moștenirea și polimorfismul pe măsură ce continuăm. Acest articol se va concentra pe elementele de bază pentru a simplifica lucrurile.
Lectură recomandată: Ce este un obiect?
Clasa Kotlin
Înainte de a crea obiecte în Kotlin, trebuie să definiți o clasă.
O clasă este un plan pentru obiect.
Ne putem gândi la clasă ca la o schiță (prototip) a unei case. Conține toate detaliile despre podele, uși, ferestre etc. Pe baza acestor descrieri construim casa. Casa este obiectul.
Deoarece multe case pot fi făcute din aceeași descriere, putem crea multe obiecte dintr-o clasă.
Cum se definește o clasă în Kotlin?
Pentru a defini o clasă în Kotlin, class
se utilizează cuvânt cheie:
class ClassName (// proprietate // funcție membru …)
Iată un exemplu:
clasa Lamp (// proprietate (membru de date) private var isOn: Boolean = false // funcție membru fun turnOn () (isOn = true) // funcție membru fun turnOff () (isOn = false))
Aici am definit o clasă numită Lamp.
Clasa are o proprietate isOn (definită în același mod ca variabilă) și două funcții membre turnOn()
și turnOff()
.
Lectură recomandată: funcții Kotlin
În Kotlin, fie proprietatea trebuie inițializată, fie trebuie declarată abstract
( Vizitați: Kotlin Abstract Class pentru a afla mai multe). În exemplul de mai sus, proprietatea isOn este inițializată la false
.
Clasele, obiectele, proprietățile, funcția membru etc. pot avea modificatori de vizibilitate. De exemplu, proprietatea isOn este privată. Aceasta înseamnă că proprietatea isOn poate fi schimbată numai din clasa Lamp.
Alți modificatori de vizibilitate sunt:
private
- vizibil (poate fi accesat) numai din interiorul clasei.public
- vizibil peste tot.protected
- vizibilă clasei și subclasei acesteia.internal
- orice client din interiorul modulului le poate accesa.
Veți afla despre protected
și internal
modificatorii mai târziu în articolul despre modificatorii de vizibilitate Kotlin.
Dacă nu specificați modificatorul de vizibilitate, acesta va fi public
implicit.
În programul de mai sus turnOn()
și turnOff()
funcțiile de membru sunt în public
timp ce proprietatea isOn este privată.
Obiecte Kotlin
Când este definită clasa, este definită doar specificația pentru obiect; nu este alocată memorie sau stocare.
Pentru a accesa membrii definiți în cadrul clasei, trebuie să creați obiecte. Să creăm obiecte din clasa Lamp.
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 )
Acest program creează două obiecte l1 și l2 din clasa Lamp. Proprietatea isOn pentru ambele lămpi l1 și l2 va fi false
.
Cum se accesează membrii?
Puteți accesa proprietățile și funcțiile de membru ale unei clase utilizând .
notația. De exemplu,
l1.turnOn ()
Această declarație apelează funcția turnOn () pentru obiectul l1.
Să luăm un alt exemplu:
l2.isOn = adevărat
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
. - Apoi,
displayLightStatus()
funcția este apelată pentru obiectele l1 și l2 care imprimă mesajul corespunzător în funcție de dacă proprietatea isOn este adevărată saufalse
.
Observați că, proprietatea isOn este inițializată în false
interiorul clasei. Când se creează un obiect al clasei, proprietatea isOn pentru obiect este inițializată false
automat. Deci, nu este necesar ca obiectul l2 să apeleze turnOff()
pentru a seta proprietatea isOn false
.
De exemplu:
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() )
Când rulați programul, ieșirea va fi:
lampa este stinsă.
Acest articol este doar o introducere în programarea orientată pe obiecte în Kotlin. Verificați aceste capitole în ordine pentru a afla mai multe:
- Constructori și inițializatori Kotlin
- Kotlin acest cuvânt cheie
- Clasa imbricată Kotlin