Kotlin classe astratta e membri astratti

In questo articolo, imparerai a conoscere la classe astratta e come implementarla in Kotlin (con l'aiuto di esempi).

Come Java, la abstractparola chiave viene utilizzata per dichiarare classi astratte in Kotlin. Non è possibile creare un'istanza di una classe astratta (non è possibile creare oggetti di una classe astratta). Tuttavia, puoi ereditare sottoclassi da can.

I membri (proprietà e metodi) di una classe astratta non sono astratti a meno che non si usi esplicitamente la abstractparola chiave per renderli astratti. Facciamo un esempio:

 abstract class Person (var age: Int = 40 fun displaySSN (ssn: Int) (println ("Il mio SSN è $ ssn.")) abstract fun displayJob (descrizione: String))

Qui,

  • Personviene creata una classe astratta . Non è possibile creare oggetti della classe.
  • la classe ha un'età di proprietà non astratta e un metodo non astratto displaySSN(). Se è necessario sovrascrivere questi membri nella sottoclasse, devono essere contrassegnati con openparola chiave.
  • La classe ha un metodo astratto displayJob(). Non ha alcuna implementazione e deve essere sovrascritto nelle sue sottoclassi.

Nota: le classi astratte sono sempre aperte. Non è necessario utilizzare esplicitamente la openparola chiave per ereditare le sottoclassi da esse.

Esempio: classe e metodo astratti di Kotlin

 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) )

Quando esegui il programma, l'output sarà:

Il mio nome è Jack Smith. Sono un insegnante di matematica. Il mio SSN è 23123.

Qui, una classe Teacherè derivata da una classe astratta Person.

Viene istanziato un oggetto jack della classe Insegnante. Siamo passati "Jack Smith"come parametro al costruttore principale durante la creazione. Questo esegue il blocco inizializzatore della Personclasse.

Quindi, il displayJob()metodo viene chiamato utilizzando l'oggetto jack. Si noti che il displayJob()metodo viene dichiarato astratto nella classe base e sovrascritto nella classe derivata.

Infine, il displaySSN()metodo viene chiamato utilizzando l'oggetto jack. Il metodo non è astratto e dichiarato nella classe Person (e non dichiarato nella Teacherclasse).

Letture consigliate: interfacce Kotlin

Le interfacce di Kotlin sono simili alle classi astratte. Tuttavia, le interfacce non possono memorizzare lo stato mentre le classi astratte possono.

Significato, l'interfaccia può avere proprietà ma deve essere astratta o deve fornire implementazioni accessorie. Considerando che, non è obbligatorio che la proprietà di una classe astratta sia astratta.

Articoli interessanti...