Bu makalede, soyut sınıf ve onu Kotlin'de nasıl uygulayacağınızı (örnekler yardımıyla) öğreneceksiniz.
Java gibi, abstract
anahtar kelime Kotlin'de soyut sınıfları bildirmek için kullanılır. Soyut bir sınıfın örneği oluşturulamaz (soyut bir sınıfın nesnelerini oluşturamazsınız). Ancak, alt sınıfları bunlardan devralabilirsiniz.
Soyut bir sınıfın üyeleri (özellikleri ve yöntemleri), abstract
onları soyut yapmak için açıkça anahtar sözcük kullanmadığınız sürece soyut değildir. Bir örnek alalım:
abstract class Kişi (var age: Int = 40 fun displaySSN (ssn: Int) (println ("SSN'm $ ssn.")) abstract fun displayJob (açıklama: Dize))
Buraya,
- soyut bir sınıf
Person
oluşturulur. Sınıfın nesnelerini oluşturamazsınız. - sınıfın soyut olmayan bir özellik yaşı ve soyut olmayan bir yöntemi vardır
displaySSN()
. Alt sınıfta bu üyeleri geçersiz kılmanız gerekirse,open
anahtar sözcükle işaretlenmeleri gerekir . - Sınıfın soyut bir yöntemi vardır
displayJob()
. Herhangi bir uygulaması yoktur ve alt sınıflarında geçersiz kılınmalıdır.
Not: Abstract sınıfları her zaman açıktır. open
Alt sınıfları onlardan devralmak için açıkça anahtar kelime kullanmanız gerekmez.
Örnek: Kotlin Soyut Sınıfı ve Metodu
abstract class Person(name: String) ( init ( println("My name is $name.") ) fun displaySSN(ssn: Int) ( println("My SSN is $ssn.") ) abstract fun displayJob(description: String) ) class Teacher(name: String): Person(name) ( override fun displayJob(description: String) ( println(description) ) ) fun main(args: Array) ( val jack = Teacher("Jack Smith") jack.displayJob("I'm a mathematics teacher.") jack.displaySSN(23123) )
Programı çalıştırdığınızda, çıktı:
Benim adım Jack Smith. Ben bir matematik öğretmeniyim. SSN'm 23123.
Burada bir sınıf Teacher
soyut bir sınıftan türetilmiştir Person
.
Öğretmen sınıfının bir nesne girişi somutlaştırılır. "Jack Smith"
Oluştururken birincil kurucuya parametre olarak geçtik . Bu, Person
sınıfın başlatıcı bloğunu yürütür .
Daha sonra displayJob()
yöntem, jack nesnesi kullanılarak çağrılır. Bu Not displayJob()
yöntemi temel sınıfta soyut olarak tanımlanması, ve türetilmiş sınıf geçersiz kılınır.
Son olarak, displaySSN()
yöntem, jack nesnesi kullanılarak çağrılır. Yöntem soyut değildir ve Person sınıfında bildirilmiştir (ve Teacher
sınıfta bildirilmemiştir ).
Önerilen Kaynaklar: Kotlin Interfaces
Kotlin arayüzleri soyut sınıflara benzer. Ancak, arayüzler durumu depolayamazken soyut sınıflar yapabilir.
Anlam, arayüzün özelliği olabilir ancak soyut olması veya erişimci uygulamaları sağlaması gerekir. Oysa soyut bir sınıfın özelliğinin soyut olması zorunlu değildir.