Kotlin Erişim Belirleyiciler (public, internal , protected, private)

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 Constructor (Yapıcı) Metot yapısından bahsetmiştik. Bu dersimizde ise Kotlin’de erişim belirleyiciler ile devam edeceğiz.

Kotlin ders listemizi takip ediyorsanız önceki derslerimizde değişkenler, fonksiyonlar ve sınıf yapılarından bahsettik. Nasıl değişken tanımlanır, fonksiyon nasıl tanımlanır ve nasıl çağırılır , sınıf nedir ve bu sınıftan nesne nasıl oluşturulur, constructor nedir ve ne işe yarar bunları anlatmış ve örnekler vermiştik. Bu dersimizde ise bu yapıları nasıl kısıtlı hale getiririz onu anlatmaya çalışacağız. Kısıtlamak nedir diye sorarsanız şöyle açıklamaya çalışayım.

Örneğin bir sınıf yazdınız ve bu sınıfınızın içinde değişkenleriniz, constructor’ınız ve fonksiyonlarınız var. Ama içerdeki değişkenlere herkesin ulaşmasını , değiştirmesini ve ya fonksiyonları herkesin kullanmasını istemiyorsunuz. Bunu neden yapmak isteyim ki gibi bir düşünceniz varsa ilerleyen derslerde Encapsulation (Kapsülleme) anlatacağız. O derste çok daha iyi anlayacaksınız. Nesne yönelimli programlamanın 3 temel kuralından biri olan encapsulation için erişim belirleyiciler olmazsa olmazdır.

Erişim belirleyiciler:

Kotlin’de 4 adet erişim belirleyici vardır: public, private, protected, internal

Örnekli anlatımlara geçmeden önce  aşağıda kısaca kim nelere ulaşıyor yazalım.

    1. public — Her yerden erişilebilir. public kelimesi halka açık anlamına gelmektedir. Bu erişim belirleyicisi ile tanımlanan her şey diğer bütün sınıflarlardan erişilebilinir. (Java ile aynı)
    2. private — Sadece tanımlandığı sınıftan erişilebilir. private özel veya gizli anlamına gelir. Bu erişim belirleyicisi ile tanımlanan herhangi bir eleman sadece ve sadece aynı sınıf içerisinden erişilebilir diğer sınıflar erişemez. (Java ile aynı)
    3. protected — Aynı sınıftan ya da o sınıftan türetilen sınıflar, nesneler tarafından erişilebilir. (Java’dan biraz daha farklı)
    4. internal —Aynı modül içindeki diğer sınıflar erişebilir. (Java’da yok)

     

Not: Eğer herhangi bir erişim belirleyici tanımlamazsak default olarak public olacaktır.

Yukarıdaki kod da her iki fonksiyonun erişim belirleyicisi public’tir. Bu yüzden public erişim belirleyicisi yazmaya gerek yoktur.

Erişim Belirleyiciler’le Örnekler:

Örnek 1:

Test2 sınıfımızda ki mobilhanem fonksiyonu içinde öncelikle Test sınıfından bir nesne yarattık ve tek tek değişkenlerine ulaşmaya ve değiştirmeye çalıştık. x ile t değişkenine ulaşabilirken y ile z değişkenine ulaşamadık. Çünkü x değişkeni public ve herkese açık. t değişkeni internal ve bu iki sınıf (Test ve Test2) aynı modül içinde olduğu için ulaşabildik. y ise private başka bir sınıftan ulaşma şansımız yok. z ise protected sadece subclass’larından (türetilen) ulaşabiliriz.

Sadece değişken değil aynı şeyler fonksiyonlar için de geçerli.

Örnek 2:

İlk örnekle birebir aynı diyebileceğimiz bir örnek. Farklı bir sınıftan public ve internal (aynı modülde oldukları için) fonksiyonlara ulaştık. private ve protected olanlara ise ulaşamadık.

Örnek 3:

Yukarıda ki örnekte Test2 sınıfı Test sınıfından türetildi. Türetmek ne demek derseniz bunu ilerleyen derslerde anlatacağız. Şimdilik bilmeniz gereken Test2 sınıfı Test sınıfından türetildi. Yani Test2, Test sınıfının alt sınıfıdır(subclass). Alt sınıf üst sınıfın protected değişken ve fonksiyonlarına ulaşabiliyor ama private olanlara ulaşamıyor. public ve internal’a ise zaten ulaşabiliyordu.

Örnek 4:

Yukarıda ki örnekte de aynı sınıf içinden private olsa bile değişken ve ya fonksiyona erişebildiğimizi görüyorsunuz. mobilhanem fonksiyonu içinde diğer fonksiyonlara hatasız ulaşabildik.

Bu dersimde sizlere Kotlin Erişim Belirleyiciler’i anlatmaya çalıştım. Bol örnekler vererek pekiştirdik. Bu örnekleri https://try.kotlinlang.org online ide ile deneyebilirsiniz. Bir sonraki dersimizde Nesne Yönelimli Programla’ya (OOP) giriş yapacağız. Umarım işinize yaramıştır.

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

1

Taha Kırca

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

1 Yorum

Haftalık Bülten

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