Kotlin Constructor (Yapıcı) Metot

Merhaba arkadaşlar ,
Mobilhanem.com sitesi için anlattığımız / yayınladığımız Kotlin Dersleri serimize kaldığımız yerden devam ediyoruz. Bir önceki dersimizde Nesne ve Sınıf yapısından bahsetmiştik. Bu dersimizde ise Kotlin Constructor yapısı ile devam edeceğiz.

Constructor Nedir? Constructor’a neden ihtiyaç duyarız.

Öncelikle Constructor nedir ondan bahsedelim. Constructor bir sınıftan bir nesne (instance) oluşturulurken o nesnenin başlangıç değerlerinin verilmesine yarayan metot benzeri bir yapıdır. Ne demek istedim ben de tam anlamadım 🙂 Hemen kısa bir örnek vereyim.

Yukarıda Test sınıftan bir nesne oluşturup bu nesnenin yazdir() fonksiyonu çağırılırsa:

Yukarıda gördüğünüz gibi isim ve yas değişkenleri önceden belirtilmiş olduğumuz için biz bunları değiştiremedik. Ama bizim şöyle bir ihtiyacımız olabilir. Bir sınıftan bir nesne yaratırken onun değerlerinide biz belirleyelim. Yani başlangıç (initial) değerlerini nesneyi oluştururken biz gönderelim. Yukarıda ki örnekten yola çıkarsak ben hangi ismi ve hangi yaşı gönderiyorsam onları ekrana yazdırsın.

İşte bu ve buna benzeri durumlarda yani nesne oluştururken sınıfımız içinde başlangıç değerleri atama işlemlerinde ve ya yapılması gereken başlangıç işlemlerini constructor içinde yaparız. Gelelim bunun kotlinde kullanımına.

Kotlin Constructor Kullanımı

Kotlin’de iki tipte constructor yapısı vardır.

1- Primary Constructor

2- Secondary constructor

İkisininde farklı kullanım alanları vardır. Şimdi bu iki yapıyı hem anlatıp hem örneklendirelim.

1- Primary Constructor

Primary yani birincil constructor direk sınıf adı tanımlanırken sınıf adının yanında tanımlanır ve sadece sınıf içindeki değişkenlere başlangıc değerlerini vermek için kullanılır. Primary constructor içinde kod yazamayız.

Örn :

Direk class adı yanında başlangıç değerlerini aldık ve class içinde kullandık. Peki bu sınıftan bir nesne nasıl yaratacağız.

Gördüğünüz gibi constructor sayesinde istediğimiz değerleri nesneyi oluştururken biz gönderdik.

Peki ben primary constructor kullanarak gönderdiğim değerler üzerinde ve ya sınıf’a ait başka değişkenler üzerinde başlangıç işlemleri yapmak istersem ne olacak?

Primary’ı Constructor’ı init bloğu ile kullanmak

Yukarıda ki sorduğum sorunun cevabı init bloğu kullanmak diyebilirim. init bloğu içinde primary constructor’da aldığım değerleri istediğim gibi işleyebilir o değerler dışında sınıfa ait başka değerlerinde başlangıç değerlerini verebilirim. Basit bir örnekle anlatmaya çalışayım.

Yukarıda ki örnekte init bloğunu nasıl kullandık anlatayım. Bildiğiniz gibi primary olan cosntructorlarda içeriye herhangi bir kod yazamıyoruz. Sadece başlangıç değerlerini veriyoruz. Ama bazı durumlarda bu başlangıç değerlerini kontrol etmemiz ve ya bu değerleri başka bir değere atamamız gerekebilir. İşte bu gibi durumlarda init bloğunu kullanıyoruz. İnit bloğu içinden direk primary içindeki değerlere ulaşabiliyor ve istediğimiz gibi kullanabiliyoruz.

Ben örneğimde isim ve yas değerlerine ulaşıp bunları ekranaBastirilacakYazi değişkenine atadım ve class’ımın herhangi bir yerinde o değeri kullandım. Yani başlangıç değerlerini alıp farklı bir değere atadım. Örneğin isim’in ve ya yas değerinin boş olup olmadığını, 0’dan farklı olup olmadığını kontrol edip beklediğim değerlerde değilse hata fırlatabilirdim. (Hata fırlatmayı ilerleyen derslerde göreceğiz). Yani yas değerini -5 gönderdiğimiz zaman benim init bloğum bunu kontrol edebilirdi.

Kısaca özet geçmek istersek init bloğu başlangıç değerlerini kontrol etmek ve bunlarla ilgili işlem yapmak için primary constructor ile birlikte kullanılan bir kod bloğudur.

Primary’ı Constructor’ı default (başlangıç) değerle kullanmak

Kotlin fonksiyonlar dersimizi okumuşsanız o dersimizde default değerin ne olduğunu ve nasıl kullanıldığını detaylı anlatmıştık. Burda kısa bir örnekle anlatayım.

Yukarıdaki örnekte ikinci Test nesnemizi oluştururken constructora site adını göndermediğimiz halde default değerini “Mobilhanem.com” verdiğimiz için site değişkenine herhangi bir atama yapılmazsa bile default değeri yani bizim örneğimizde ki “Mobilhanem.com” değerini kullanır. Fonksiyonlar dersimizde daha açıklayıcı anlatmıştım bakabilirsiniz.

2 – Secondary Constructor

Kotlinde sadece bir tane primary constructor olabilirken birden fazla secondary constructor olabilir ve bu constructorlar “constructor” adı ile oluşturulur. Secondary constructorlar primary constructorı çağırmak zorundadırlar (Eğer tanımlı bir primary constructor var ise). Peki neden ihtiyaç duyarız ikinci bir costructora.  Mevcut olan bir class’dan bir instance yaratırken farklı farklı değerlere başlangıç değeri vermek isteyebiliriz.

Örnek:

Secondary constructor’lar birbirlerini çağırabilirler. Bunu this keywordu ile yaparlar.

Örnek:

Yukarıda ikinci constructor birinci constructor’ı çağırıyor.

Bu dersimde sizlere Kotlin Constructor yapısını anlatmaya çalıştım. Bol örnekler vererek pekiştirdik. Bu örnekleri https://try.kotlinlang.org online ide ile deneyebilirsiniz. Umarım işinize yaramıştır. Bir sonraki dersimde Kotlin Erişim Belirleyiciler konusunu sizlere anlatmaya çalışacağım.

Bir sonraki dersimde görüşmek dileğiyle …

 

Taha Kırca

iOS & Android & Apple Watch Developer, Mobilhanem.com yazarı, Karadeniz Uşağu, Ordu Sevdalısı

4 Yorum

Haftalık Bülten

Mobilhanem'de yayınlanan dersleri haftalık mail almak ister misiniz?