CodeBlanks Logo Icon CodeBlanks

abstract

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

Main.kt
// 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

Main.kt
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

Soru
abstract class Animal {
    ____ fun sound(): String
}
Cevap
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.

Orta seviye bölümündeki tüm dersler