Görünürlük Değiştiricileri
Coddy'nin Kotlin Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 8 / 57.
Kapsülleme, bir sınıfın verilerinin nasıl kullanılacağını kontrol etmesi anlamına gelir. Görünürlük belirleyicileri, bir üyeyi kimlerin görebileceğine karar verir. private, onu sınıfın dışındaki her şeyden gizler; bu nedenle sınıfın kendi yöntemleri içeriye erişmenin tek yoludur:
class Account {
private var balance = 0
fun deposit(amount: Int) {
if (amount > 0) balance += amount
}
fun report() = "balance: $balance"
}main içinde:
val a = Account()
a.deposit(50)
a.deposit(-999)
println(a.report())
// a.balance = 1_000_000 // hata: 'balance' erişilemez: privateÇıktı:
balance: 50Kotlin'in dört değiştiricisi vardır. Biri olmadığında bir bildirim public olur ve her yerde görünür:
public // varsayılan: her yerde görünür
internal // aynı modülde görünür (uygulama veya kütüphane)
protected // sınıfta ve alt sınıflarında görünür
private // sınıf içinde görünür (veya dosyada, üst düzey bildirimler için)Özel yardımcı işlevler genel arayüzü küçük tutar. Çağıranlar sınıfın ne yaptığını görür, nasıl yaptığını değil:
class Password(private val text: String) {
val isStrong: Boolean
get() = hasDigit() && text.length >= 8
private fun hasDigit() = text.any { it.isDigit() }
}main içinde:
println(Password("secret123").isStrong)
println(Password("short1").isStrong)Çıktı:
true
falseYapıcı özellikleri de niteleyiciler alır: private val, dış kodun okuyamayacağı bir değeri depolar. Verileri gizlemek, bir sınıfın her değişikliği denetlemesini ve kurallarını korumasını sağlar:
class Locker(private val code: String) {
private val items = mutableListOf<String>()
fun store(item: String, code: String): Boolean {
if (code != this.code) return false
items.add(item)
return true
}
}Görev
KolayLocker(private val code: String) sınıfını tamamla. items listesi özeldir. store(item, code), yalnızca kod eşleştiğinde öğeyi ekler ve ekleyip eklemediğini döndürür; open(code), kod eşleştiğinde öğeleri , ile birleştirilmiş olarak (veya empty) döndürür, aksi takdirde wrong code döndürür.
Sağlanan kod, kilitçinin kodunu okur ve ardından put <code> <item> veya open <code> komutlarını işler. Her put için stored veya denied yazdırır ve her open işleminin sonucunu yazdırır.
Kodun Locker.kt dosyasına yazılmalıdır. Main.kt, sağlanan girdi/çıktı kodunu içerir ve düzenlenemez.
Kendin dene
fun main() {
// Sağlanan girdi/çıktı kodu: olduğu gibi bırakın
val input = generateSequence(::readLine).toList()
val locker = Locker(input[0])
for (cmd in input.drop(1)) {
val p = cmd.split(" ")
if (p[0] == "put") println(if (locker.store(p[2], p[1])) "stored" else "denied")
else println(locker.open(p[1]))
}
}
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Nesne Yönelimli Programlama bölümündeki tüm dersler
1Sınıflar ve Nesneler
Dosyalarla ÇalışmaSınıfları TanımlamaBirincil Yapıcılarinit Blokları ve Doğrulamaİkincil YapıcılarTekrar - Kütüphane Kartı4Kalıtım
Açık Sınıflar ve Alt SınıflarÜyeleri Geçersiz Kılmasuper ve YapıcılarSoyut SınıflarTekrar - Personel Dizini2Özellikler ve Kapsülleme
Özel ErişimcilerGörünürlük DeğiştiricileriÖzel Setter'larlazy ve lateinitTekrar - Banka Hesabı5Arayüzler
Arayüz BildirimleriVarsayılan MetotlarBirden Çok ArayüzTür Olarak ArayüzlerÖzet - Ödeme Yöntemleri8Generic'ler
Generic FonksiyonlarGeneric SınıflarTür Kısıtlamalarıin ve out ile VaryansTekrar - Öncelik Kuyruğu11Proje: Kütüphane Yönetimi
Kitaplar ve ÜyelerKitap Ödünç AlmaKendi başına pratik yap: Kotlin playground