open
- Kotlin kursu
- Orta seviye
- Ders 7/116
- 5 dk
open ile miras alınabilir sınıf tanımlamayı öğrenirsin.
open: miras alınabilir sınıf
Kotlin'de sınıflar varsayılan olarak final'dir; yani miras alınamaz. Bir sınıfı miras alınabilir yapmak için open niteleyicisi eklenir.
Örnek: open class Animal(val name: String). Bu sınıf artık alt sınıflar tarafından miras alınabilir. open olmadan class Dog : Animal() yazarsan derleyici hata verir. Aynı durum metotlar için de geçerlidir; alt sınıfın yeniden tanımlayabileceği metotlar open ile işaretlenmelidir.
open metot
Bir metodu alt sınıfta yeniden tanımlanabilir yapmak için open niteleyicisi kullanılır. Varsayılan olarak sınıf metotları final'dir.
Örnek: open class Animal { open fun sound() { println("ses") } }. Burada hem sınıf hem metot open. Bu, alt sınıfın sound'u yeniden tanımlayabileceği anlamına gelir. Sınıf open olmadan metot open olamaz; önce sınıf acilmalıdır.
Uygulama Animal üst sınıfı ve Dog alt sınıfı
Animal adında open bir sınıf tanımla; primary constructor val name: String alsın. İçinde open fun sound() metodu olsun; gövdesi println("$name ses çıkarır") yazsın. Dog adında bir alt sınıf tanımla; Animal(name) ile miras alsın ve override fun sound() metodu println("$name havlar") yazsın. main içinde bir Dog örneği oluştur ve sound'u çağır.
Başlangıç kodu
// Animal üst sınıfı (open)
// open fun sound metodu ekle
// Dog alt sınıfı, Animal'a miras
// override fun sound ekle
// main'de Dog örnekle, sound çağırÖrnek çözüm
open class Animal(val name: String) {
open fun sound() {
println("$name ses çıkarır")
}
}
class Dog(name: String) : Animal(name) {
override fun sound() {
println("$name havlar")
}
}
fun main() {
val d = Dog("Karabaş")
d.sound()
}Beklenen çıktı
Karabaş havlar
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Aşağıdaki tanımlardan hangisi miras alınabilir bir sınıf oluşturur?
- class Animal(val name: String)
- final class Animal(val name: String)
- sealed class Animal(val name: String)
- open class Animal(val name: String) Doğru cevap
Açıklama: open niteleyicisi miras alınabilirliği açar.
2 open sınıf tanımını tamamla
open ____ Animal(val name: String) {
open fun sound() { println(name) }
}
open class Animal(val name: String) {
open fun sound() { println(name) }
}
Açıklama: open class ile miras alınabilir sınıf tanımlanır.
3 Miras kalıplarını eşle
| Kavram | Anlamı |
|---|---|
open class Animal |
Miras alınabilir üst sınıf |
class Dog : Animal() |
Alt sınıf bildirimi |
open fun sound() |
Yeniden tanımlanabilir metot |
Animal(name) |
Üst sınıf constructor çağrısı |