Bu makalede, Kotlin'de Nesne yönelimli programlama ile tanışacaksınız. Sınıfın ne olduğunu, nesnelerin nasıl oluşturulacağını ve programınızda nasıl kullanılacağını öğreneceksiniz.
Kotlin hem işlevsel hem de nesne yönelimli programlamayı destekler.
Kotlin, üst düzey işlevler, işlev türleri ve lambdalar gibi özellikleri destekler, bu da onu işlevsel programlama tarzında çalışmak için mükemmel bir seçim haline getirir. Daha sonraki bölümlerde bu kavram hakkında bilgi edineceksiniz. Bu makale Kotlin'de nesne yönelimli programlama stiline odaklanacaktır.
Nesne yönelimli Programlama (OOP)
Nesne yönelimli programlamada, karmaşık bir problemi nesneler oluşturarak daha küçük kümelere ayırabilirsiniz.
Bu nesneler iki özelliği paylaşır:
- durum
- davranış
Birkaç örnek alalım:
- Lamba bir nesnedir
- Açık veya kapalı durumda olabilir.
- Yapabilirsin
turn on
veturn off
lamba (davranış).
- Bisiklet bir nesnedir
- Mevcut dişli, iki tekerlek, vites sayısı vb. Durumlara sahiptir.
- Frenleme, hızlanma, vites değiştirme vb. Davranışlara sahiptir.
Veri kapsülleme, kalıtım ve çok biçimlilik gibi nesne yönelimli bir programlamanın ayrıntılı özelliklerini öğreneceksiniz. Bu makale, işleri basit tutmanın temellerine odaklanacak.
Önerilen okuma: Nesne nedir?
Kotlin Sınıfı
Kotlin'de nesne oluşturmadan önce bir sınıf tanımlamanız gerekir.
Sınıf, nesne için bir plandır.
Sınıfı bir evin krokisi (prototipi) olarak düşünebiliriz. Katlar, kapılar, pencereler vb. İle ilgili tüm detayları içerir. Bu açıklamalara dayanarak evi inşa ediyoruz. Nesne evdir.
Aynı tanımdan birçok ev yapılabildiğinden, bir sınıftan çok sayıda nesne oluşturabiliriz.
Kotlin'de bir sınıf nasıl tanımlanır?
Kotlin'de bir sınıf tanımlamak için class
anahtar kelime kullanılır:
sınıf SınıfAdı (// özellik // üye işlevi…)
İşte bir örnek:
class Lamp (// özellik (veri üyesi) private var isOn: Boolean = false // üye işlevi eğlence turnOn () (isOn = true) // üye işlevi eğlence turnOff () (isOn = false))
Burada Lamp adında bir sınıf tanımladık.
Sınıfın bir özelliği isOn (değişkenle aynı şekilde tanımlanmıştır) ve iki üye işlevi vardır turnOn()
ve turnOff()
.
Önerilen Kaynaklar: Kotlin fonksiyonları
Kotlin'de, ya özellik başlatılmalı ya da bildirilmelidir abstract
( Daha fazla bilgi edinmek için Ziyaret: Kotlin Soyut Sınıfı). Yukarıdaki örnekte, isOn özelliği olarak başlatılmıştır false
.
Sınıflar, nesneler, özellikler, üye işlevi vb. Görünürlük değiştiricilere sahip olabilir. Örneğin, isOn özelliği özeldir. Bu, isOn özelliğinin yalnızca Lamp sınıfının içinden değiştirilebileceği anlamına gelir.
Diğer görünürlük değiştiriciler şunlardır:
private
- yalnızca sınıfın içinden görülebilir (erişilebilir).public
- her yerde görülebilir.protected
- sınıf ve alt sınıfı tarafından görülebilir.internal
- modül içindeki herhangi bir müşteri bunlara erişebilir.
Sen öğreneceksiniz protected
ve internal
düzenleyiciler sonra Kotlin görünürlük düzenleyiciler makalesinde.
Görünürlük değiştiriciyi belirtmezseniz, bu public
varsayılan olarak olacaktır .
Yukarıdaki programda turnOn()
ve turnOff()
üye işlevleri public
, isOn özelliği özeldir.
Kotlin Nesneleri
Sınıf tanımlandığında, yalnızca nesnenin özelliği tanımlanır; bellek veya depolama tahsis edilmemiştir.
Sınıf içinde tanımlanan üyelere erişmek için, nesneler oluşturmanız gerekir. Lamp sınıfından nesneler oluşturalım.
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 )
Bu program Lamp sınıfından iki nesne l1 ve l2 oluşturur. L1 ve l2 lambalarının her ikisi için isOn özelliği olacaktır false
.
Üyelere nasıl erişilir?
.
Notasyonu kullanarak bir sınıfın özelliklerine ve üye işlevlerine erişebilirsiniz . Örneğin,
l1.turnOn ()
Bu ifade, l1 nesnesi için turnOn () işlevini çağırır.
Başka bir örnek alalım:
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
. - Daha sonra,
displayLightStatus()
l1 ve l2 nesneleri için, isOn özelliğinin true veya true olmasına bağlı olarak uygun mesajı yazdıran işlev çağrılırfalse
.
İsOn özelliğinin false
sınıf içinde başlatıldığına dikkat edin . Sınıfın bir nesnesi oluşturulduğunda, nesnenin isOn özelliği false
otomatik olarak başlatılır . Bu nedenle, l2 nesnesinin turnOff()
isOn özelliğini ayarlamak için çağrılması gerekli değildir false
.
Örneğin:
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() )
Programı çalıştırdığınızda, çıktı:
lamba kapalı.
Bu makale, Kotlin'de nesne yönelimli programlamaya giriş niteliğindedir. Daha fazlasını öğrenmek için bu bölümleri sırayla kontrol edin:
- Kotlin Kurucuları ve Başlatıcıları
- Bu Anahtar Kelimeyi Kotlin
- Kotlin İç İçe Sınıfı