Kotlin - 6 - Sınıflar

Class (Sınıf):
“class” kelimesi ile tanımlanır, “constructor ” ifadesi de oluşturucu methodun tanımlanmasını sağlar ve süslü parantezler içerisinde detaylanır. Tanımı 2 kısımdan incelemek mümkün,
  1.  “class header” – isminin, tip parametrelerinin ve birincil constructor fonksiyonundan oluşan kısım
  2.  “class body” – Süslü parantezler arasındaki kısım.

Kotlin’de her iki kısımda isteğe bağlıdır. Eğer Body kısmı boş kalacak ise süslü parantezler kullanılmayabilir. Eğer birincil constructor method anotation ya da visibility modifier içermiyor ise ilgili keyword kullanılması zorunlu olmaz ve kısaltılabilir. Constructor parametreleri bu methoda ilişkin kodu barındıran body kısmındaki “init” olarak adlandırılan initializer blokta kullanılabilir.

Birincil constructor da tanımlanan parametreler değişebilir “var” veya read-only  “val” olarak oluşturulabilir. 


İkincil Cunstructor:
Class bir ve birden çok ikincil oluşturucu method içerebilir, bu methodlar “costructor” kelimesi ile tanımlanır ve eğer birincil oluşturucu method tanımlı ise (yukarıdaki örnek te de görülebileceği şekilde “ :  this(name)”) bu methodu delege etmeleri gerekir.
Eğer class’ınız hiçbir oluşturucu method içermez ise, standart olarak public şeklinde boş bir constructor oluşturulur, bunu istemiyor iseniz boş bir constructor oluşturmalı ve visebility modifier’ını istediğiniz gibi seçmelisiniz.


Dikkat ederseniz Kotlinde “new” keyword’ü kullanılmıyor. Class member ları :

-         -  Cosnructor ve Initilizer
-         -  Fonksiyon
-         -  Property
-         -  Gömülü iç sınıflar
-         -  Obje tanımları

Kalıtım:
Kotlinde tüm sınıflar “Any” genel süper clasından oluşur, bu süper klas tanımı olmayan tüm sınıflara gizli olarak atanır. “Any” java.lang.object “equals(), hashCode(), toString” dışında bir member içermez. “open” ifadesi javaya göre ters çalışır, Kotlinde ön tanımlı tüm class lar final dır, kalıtılabilecek class lar open ile işaretlenmelidir.


Özelliklerin ve Method ların override edilmesi:
Method larında override edilebilmesi için öncelikle “open” ile açılması gerekir. Akabinden kalıtılan sınıfta “oberride” keyword’ü ile işlemimizi gerçekleştirebiliriz. Aksi taktirde Örnekteki 2. Fonksiyon için olan hatayı alırız. Bu arada süper klasındaki fonksiyonu override edne fonksiyon defaultta açık olur bir sonraki adımda “override” edilebilir olması istenmiyorsa bu noktada “final” ile sonlandırılmalıdır. Özelliklerin override edilmesi de fonksiyonlar ile hemen hemen aynıdır.

NOT : “val” tipli özelliği “var” olarak override edebilirsiniz, ancak tersi söz konusu değil. 

Kalıtılan class içinden süper class’ına “süper.” Keyword’ü ile özelliklerine ve fonksiyonuna erişim sağlanabilir, Ayrıca “super@<referans adı>” yolu ile referanslara da erişim sağlanabilir. 


Aynı tipten 1 den fazla class’ı kalıtıyor ise çakışan özellikler override edilmelidir.


Abstract:
"abstract" ile oluşturulur, ancak tanım içermez. İnterface ler gibi default open dır lar. Non-abstrac yani abstract olmayan sınıfı abstract olarak override edebiliriz.







Yorumlar

Yazılar

Kotlin - 1 - Giriş

Genesys Nuance-ASR Entegrasyonu Port Kullanımı

Kotlin - 3 - Paket tanımı ve Import