W tym artykule zostaniesz wprowadzony do programowania obiektowego w Kotlinie. Dowiesz się, czym jest klasa, jak tworzyć obiekty i używać ich w swoim programie.
Kotlin obsługuje zarówno programowanie funkcjonalne, jak i obiektowe.
Kotlin obsługuje funkcje, takie jak funkcje wyższego rzędu, typy funkcji i lambdy, co czyni go doskonałym wyborem do pracy w funkcjonalnym stylu programowania. Dowiesz się o tej koncepcji w dalszych rozdziałach. W tym artykule skupimy się na stylu programowania obiektowego w Kotlinie.
Programowanie obiektowe (OOP)
W przypadku programowania obiektowego można podzielić złożony problem na mniejsze zestawy, tworząc obiekty.
Obiekty te mają dwie cechy:
- stan
- zachowanie
Weźmy kilka przykładów:
- Lampa jest przedmiotem
- Może być włączony lub wyłączony.
- Możesz
turn on
iturn off
lampa (zachowanie).
- Rower to przedmiot
- Ma aktualny bieg, dwa koła, liczbę biegów itp.
- Zachowuje się podczas hamowania, przyspieszania, zmiany biegów itp.
Dowiesz się o szczegółach programowania obiektowego, takich jak: hermetyzacja danych, dziedziczenie i polimorfizm w dalszej części. W tym artykule skupimy się na podstawach, aby uprościć sprawę.
Zalecana lektura: Co to jest przedmiot?
Klasa Kotlin
Zanim utworzysz obiekty w Kotlinie, musisz zdefiniować klasę.
Klasa to plan obiektu.
Możemy myśleć o klasie jako o szkicu (prototypie) domu. Zawiera wszystkie szczegóły dotyczące podłóg, drzwi, okien itp. Na podstawie tych opisów budujemy dom. Dom jest obiektem.
Ponieważ z tego samego opisu można zbudować wiele domów, możemy utworzyć wiele obiektów z jednej klasy.
Jak zdefiniować klasę w Kotlinie?
Do zdefiniowania klasy w Kotlin class
służy słowo kluczowe:
class ClassName (// właściwość // funkcja składowa…)
Oto przykład:
class Lamp (// property (element członkowski danych) private var isOn: Boolean = false // funkcja składowa fun turnOn () (isOn = true) // funkcja składowa fun turnOff () (isOn = false))
Tutaj zdefiniowaliśmy klasę o nazwie Lamp.
Klasa ma jedną właściwość isOn (zdefiniowaną w taki sam sposób jak zmienna) oraz dwie funkcje składowe turnOn()
i turnOff()
.
Zalecana literatura: funkcje Kotlina
W Kotlinie właściwość musi zostać zainicjowana lub zadeklarowana abstract
( odwiedź: Klasa abstrakcyjna Kotlin, aby dowiedzieć się więcej). W powyższym przykładzie właściwość isOn jest inicjowana do false
.
Klasy, obiekty, właściwości, funkcje składowe itp. Mogą mieć modyfikatory widoczności. Na przykład właściwość isOn jest prywatna. Oznacza to, że właściwość isOn można zmienić tylko z poziomu klasy Lamp.
Inne modyfikatory widoczności to:
private
- widoczne (dostępne) tylko z wnętrza klasy.public
- widoczne wszędzie.protected
- widoczne dla klasy i jej podklasy.internal
- każdy klient wewnątrz modułu ma do nich dostęp.
Poznasz protected
i internal
modyfikatory później w Kotlin modyfikatorów widoczności artykułu.
Jeśli nie określisz modyfikatora widoczności, będzie to public
wartość domyślna.
W powyższym programie, turnOn()
a turnOff()
funkcje public
składowe są, podczas gdy właściwość isOn jest prywatna.
Obiekty Kotlin
Gdy zdefiniowana jest klasa, definiowana jest tylko specyfikacja obiektu; nie przydzielono żadnej pamięci ani magazynu.
Aby uzyskać dostęp do członków zdefiniowanych w klasie, musisz utworzyć obiekty. Stwórzmy obiekty z klasy 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 )
Ten program tworzy dwa obiekty l1 i l2 klasy Lamp. Właściwość isOn dla obu lamp l1 i l2 będzie miała wartość false
.
Jak uzyskać dostęp do członków?
Dostęp do właściwości i funkcji składowych klasy można uzyskać przy użyciu .
notacji. Na przykład,
l1.turnOn ()
Ta instrukcja wywołuje funkcję turnOn () dla obiektu l1.
Weźmy inny przykład:
l2.isOn = true
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
. - Następnie
displayLightStatus()
wywoływana jest funkcja dla obiektów l1 i l2, która wypisuje odpowiedni komunikat w zależności od tego, czy właściwość isOn ma wartość true czyfalse
.
Zwróć uwagę, że właściwość isOn jest inicjowana false
wewnątrz klasy. Podczas tworzenia obiektu klasy właściwość isOn dla obiektu jest inicjowana false
automatycznie. Nie jest więc konieczne, aby obiekt l2 wywoływał turnOff()
właściwość set isOn do false
.
Na przykład:
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() )
Po uruchomieniu programu wynik będzie następujący:
lampa jest wyłączona.
Ten artykuł jest tylko wprowadzeniem do programowania obiektowego w Kotlinie. Sprawdź kolejno te rozdziały, aby dowiedzieć się więcej:
- Konstruktory i inicjatory Kotlin
- Kotlin to słowo kluczowe
- Klasa zagnieżdżona Kotlin