Birincil Yapıcılar
Coddy'nin Kotlin Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 3 / 57.
Çoğu Kotlin sınıfı başlangıç değerlerini, sınıf adından sonra parantez içinde yazılan bir birincil yapıcıda alır. Bir parametrenin önüne val veya var yazmak, onu aynı zamanda bir özellik hâline getirir:
class Book(val title: String, var pages: Int)main içinde:
val book = Book("Dune", 412)
println(book.title)
book.pages += 8
println(book.pages)Çıktı:
Dune
420val veya var içermeyen bir parametre yalnızca örnek oluşturulurken kullanılabilir; örneğin bir özelliği hesaplamak için. val özelliklerine oluşturulduktan sonra yeniden atama yapılamaz; var özelliklerine yapılabilir:
class Temperature(celsius: Double) {
val fahrenheit = celsius * 9 / 5 + 32
}main içinde:
val t = Temperature(100.0)
println(t.fahrenheit)Çıktı:
212.0Yapıcı parametrelerinin varsayılan değerleri olabilir ve ada göre geçirilebilir; bu nedenle tek bir yapıcı, bir örnek oluşturmanın birçok yolunu kapsar:
class Timer(val seconds: Int, val label: String = "timer")main içinde:
val egg = Timer(300, "egg")
val quick = Timer(30)
val named = Timer(label = "tea", seconds = 180)
println("${egg.label} ${egg.seconds}")
println("${quick.label} ${quick.seconds}")
println("${named.label} ${named.seconds}")Çıktı:
egg 300
timer 30
tea 180Sınıf gövdesinin içinde this, geçerli örneği ifade eder. Bir metot parametresi bir özellikle aynı ada sahip olduğunda gereklidir:
class Player(var name: String) {
fun rename(name: String) {
this.name = name
}
}main içinde:
val p = Player("anon")
p.rename("Ada")
println(p.name)Çıktı:
AdaGörev
KolayBirincil kurucusunda salt okunur bir owner ve varsayılan değeri 0 olan değiştirilebilir bir balance içeren Account sınıfını bildirin. Ada has 150 değerini döndüren summary() işlevini ekleyin.
Verilen kod bir sahip adı okur ve ikinci bir satır mevcut olduğunda başlangıç bakiyesini okur. Hesabı bakiye ile veya bakiye olmadan oluşturur ve summary() çıktısını yazdırır.
Kodunuz Account.kt dosyasına gitmelidir. Main.kt verilen 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 account = if (input.size > 1) Account(input[0], input[1].toInt()) else Account(input[0])
println(account.summary())
}
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