English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In questo articolo, imparerai le classi astratte e come implementarle in Kotlin (attraverso esempi).
Come in Java, la parola chiave abstract viene utilizzata per dichiarare classi astratte in Kotlin. Non è possibile istanziare classi astratte (non è possibile creare oggetti di classi astratte). Ma è possibile derivare classi figlie da esse.
Come in Java, la parola chiave abstract viene utilizzata per dichiarare classi astratte in Kotlin. Non è possibile istanziare classi astratte (non è possibile creare oggetti di classi astratte). Tuttavia, è possibile derivare classi figlie da esse.
abstract class Person { var age: Int = 40 fun displaySSN(ssn: Int) { println("Il mio numero di assicurazione sociale è: $ssn.") } abstract fun displayJob(description: String) }
Ecco qui,
Creare una classe astratta Person. Non è possibile creare un oggetto di questa classe.
Questa classe ha attributi non astratti come age e metodi non astratti come displaySSN(). Se si desidera sovrascrivere questi membri nella classe figlia, è necessario marchiarli con la parola chiave open.
Questa classe ha un metodo astratto displayJob(). Non ha alcuna implementazione e deve essere sovrascritto nella classe figlia.
Attenzione:Le classi astratte sono sempre aperte. Non è necessario utilizzare esplicitamente la parola chiave open per derivare classi figlie da esse.
abstract class Person(name: String) { init { println("Il mio nome è $name.") } fun displaySSN(ssn: Int) { println("Il mio numero di assicurazione sociale è $ssn.") } abstract fun displayJob(description: String) } class Teacher(name: String): Person(name) { override fun displayJob(description: String) { println(description) } } fun main(args: Array<String>) { val jack = Teacher("Jack Smith") jack.displayJob("Sono un insegnante di matematica.") jack.displaySSN(23123) }
Quando si esegue il programma, l'output è:
Il mio nome è Jack Smith. Sono un insegnante di matematica. Il mio numero di assicurazione sociale è 23123.
In questo caso, la classe Teacher deriva dall'astratta classe Person
L'oggetto della classe Teacher chiamato jack è istanzionato. Durante la creazione del costruttore principale, passiamo a lui il parametro “Jack Smith”. Questo esegue l'inizializzazione del blocco Person della classe.
Poi, chiamare il metodo displayJob() utilizzando l'oggetto Jack. Notare che il metodo displayJob() è dichiarato come astratto nella classe base e overridden nella classe derivata.
Infine, chiamare il metodo displaySSN() utilizzando l'oggetto Jack. Il metodo non è astratto e viene dichiarato nella classe Person (non nella classe Teacher).
Conoscenze correlate: Interfaccia Kotlin
L'interfaccia Kotlin è simile all'astratto. Tuttavia, l'interfaccia non può memorizzare stato, mentre l'astratto può.
Quindi, l'interfaccia può avere proprietà, ma deve essere astratta o deve fornire un'implementazione degli accessori. Tuttavia, le proprietà dell'astratto non devono necessariamente essere astratte.