abstract
- Kotlin kursu
- Orta seviye
- Ders 10/116
- 5 dk
abstract class ile soyut sınıf öğrenirsin.
abstract class
Bir abstract class, doğrudan örneklenemeyen ve alt sınıfların doldurması gereken soyut üyeler içerebilen sınıftır. Soyut metot gövdesiz bildirilir; alt sınıf bunu override ile doldurmak zorundadır.
Örnek: abstract class Animal { abstract fun sound(): String }. Bu sınıfı Animal() şeklinde örnekleyemezsin. Bir alt sınıf override fun sound(): String yazarak gövde sağlamalıdır. abstract sınıflar open'ın daha güçlü halidir; miras için açık olmak zorundadırlar.
abstract sınıfı miras alma
Bir abstract sınıfı miras alan alt sınıf, tüm abstract metotları override ile doldurmak zorundadır. Aksi halde alt sınıf da abstract olmalıdır.
Örnek: class Cat : Animal() { override fun sound() = "miyav" }. Burada Cat, Animal'ın abstract sound metodunu doldurur. Cat artık somut bir sınıftır; Cat() ile örneklenebilir. Animal() ise örneklenemez; yalnızca alt sınıfı üzerinden kullanılır.
Uygulama Animal abstract sınıfı ve Cat alt sınıfı
Animal adında abstract bir sınıf tanımla; primary constructor val name: String alsın. İçinde abstract fun sound(): String metodu olsun. Cat adında bir alt sınıf tanımla; Animal(name) ile miras alsın ve override fun sound(): String metodu "$name miyavlar" döndürsün. main içinde bir Cat örneği oluştur ve sound()'un sonucunu yazdır.
Başlangıç kodu
// Animal abstract sınıfı
// soyut sound metodu imzası
// Cat alt sınıfı, Animal'a miras
// override ile miyavlar döndür
// main'de Cat örnekle, sound yazdırÖrnek çözüm
abstract class Animal(val name: String) {
abstract fun sound(): String
}
class Cat(name: String) : Animal(name) {
override fun sound(): String {
return "$name miyavlar"
}
}
fun main() {
val c = Cat("Pamuk")
println(c.sound())
}Beklenen çıktı
Pamuk miyavlar
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 abstract metot tanımını tamamla
abstract class Animal {
____ fun sound(): String
}
abstract class Animal {
abstract fun sound(): String
}
Açıklama: abstract metot gövdesiz bildirilir.
2 abstract sınıf kavramlarını eşle
| Kavram | Anlamı |
|---|---|
abstract class Animal |
Soyut üst sınıf |
abstract fun sound() |
Gövdesiz metot |
override fun sound() |
Alt sınıfta doldurma |
class Cat : Animal() |
Somut alt sınıf |
3 <code>abstract class Animal</code> tanımlı. Aşağıdakilerden hangisi yapılamaz?
- Animal sınıfından bir alt sınıf türetmek
- Animal içinde concrete (gövdeli) metot tanımlamak
- Animal'ı doğrudan örneklemek Doğru cevap
- Animal içinde abstract metot tanımlamak
Açıklama: abstract sınıf doğrudan örneklenemez; yalnızca alt sınıfı üzerinden kullanılır.