Kotlin absztrakt osztály és absztrakt tagok

Ebben a cikkben megtudhatja az absztrakt osztályt és annak megvalósítását Kotlinban (példák segítségével).

A Java-hoz hasonlóan a abstractkulcsszót is használják az absztrakt osztályok deklarálására Kotlinban. Az absztrakt osztály nem példányosítható (nem hozhat létre absztrakt osztály objektumait). Alosztályokat azonban örökölhet tőlük.

Az absztrakt osztály tagjai (tulajdonságai és módszerei) nem elvontak, hacsak nem kifejezetten abstractkulcsszót használsz absztraktvá. Vegyünk egy példát:

 absztrakt osztály Személy (változó kor: Int = 40 szórakoztató kijelzőSSN (ssn: Int) (println ("Az SSN-m $ ssn.")) elvont szórakoztató displayJob (leírás: String))

Itt,

  • absztrakt osztály Personjön létre. Nem hozhat létre objektumokat az osztályból.
  • az osztálynak nem elvont tulajdonosi kora és nem elvont módszere van displaySSN(). Ha felül kell írnia ezeket a tagokat az alosztályban, azokat openkulcsszóval kell megjelölni .
  • Az osztály elvont módszerrel rendelkezik displayJob(). Nincs megvalósítása, és alosztályaiban felül kell írni.

Megjegyzés: Az absztrakt osztályok mindig nyitottak. Nem kell kifejezetten openkulcsszót használnia, hogy alosztályokat örököljön tőlük.

Példa: Kotlin absztrakt osztály és módszer

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

A program futtatásakor a kimenet a következő lesz:

A nevem Jack Smith. Matematikatanár vagyok. Az SSN-m 23123.

Itt egy osztály Teacherabsztrakt osztályból származik Person.

A tanár osztály objektum jackje példányos. Van telt "Jack Smith", mint a paraméter az elsődleges kivitelező a létrehozás során. Ez végrehajtja az Personosztály inicializáló blokkját .

Ezután a displayJob()metódust jack objektum segítségével hívják meg. Ne feledje, hogy a displayJob()metódust az alaposztályban absztraktnak, a származtatott osztályban felülírják.

Végül a displaySSN()metódust jack objektum segítségével hívják meg. A módszer nem absztrakt és a Person osztályban van deklarálva (és nem az Teacherosztályban van deklarálva ).

Ajánlott irodalom: Kotlin interfészek

A Kotlin interfészek hasonlóak az absztrakt osztályokhoz. Az interfészek azonban nem tárolhatják az állapotot, míg az absztrakt osztályok képesek.

Jelentése: az interfésznek lehet tulajdonsága, de absztraktnak kell lennie, vagy hozzáférési megvalósításokat kell biztosítania. Ugyanakkor nem kötelező, hogy az absztrakt osztály tulajdonságai elvontak legyenek.

érdekes cikkek...