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,
- “class header” – isminin, tip parametrelerinin ve birincil constructor fonksiyonundan oluşan kısım
- “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
Yorum Gönder