Котлін Анотація Клас та Реферат Члени

У цій статті ви дізнаєтесь про абстрактний клас та як його реалізувати в Котліні (за допомогою прикладів).

Як і Java, abstractключове слово використовується для оголошення абстрактних класів у Kotlin. Неможливо створити екземпляр абстрактного класу (не можна створювати об’єкти абстрактного класу). Однак ви можете успадкувати підкласи від can them.

Члени (властивості та методи) абстрактного класу не є абстрактними, якщо ви явно не використовуєте abstractключове слово, щоб зробити їх абстрактними. Візьмемо приклад:

 абстрактний клас Person (var age: Int = 40 fun displaySSN (ssn: Int) (println ("My SSN is $ ssn.")) абстрактний веселий displayJob (опис: рядок)

Ось,

  • створюється абстрактний клас Person. Ви не можете створювати об'єкти класу.
  • клас має не абстрактний вік властивостей та не абстрактний метод displaySSN(). Якщо вам потрібно замінити цих членів у підкласі, вони повинні бути позначені openключовим словом.
  • У класі використовується абстрактний метод displayJob(). Він не має жодної реалізації і повинен бути замінений у своїх підкласах.

Примітка: Абстрактні класи завжди відкриті. Вам не потрібно явно використовувати openключове слово для успадкування підкласів від них.

Приклад: Абстрактний клас і метод Котліна

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

Коли ви запускаєте програму, результат буде:

Мене звуть Джек Сміт. Я вчитель математики. Мій SSN - 23123.

Тут клас Teacherпоходить від абстрактного класу Person.

Створюється екземпляр об'єктного гнізда класу Teacher. Ми передали "Jack Smith"як параметр первинний конструктор під час його створення. Це виконує блок ініціалізатора Personкласу.

Потім displayJob()метод викликається за допомогою об'єкта jack. Зверніть увагу, що displayJob()метод оголошується абстрактним у базовому класі та заміненим у похідному класі.

Нарешті, displaySSN()метод викликається за допомогою об'єкта jack. Метод є абстрактним та оголошений у класі Person (і не оголошений у Teacherкласі).

Рекомендуємо прочитати: Інтерфейси Kotlin

Інтерфейси Kotlin подібні до абстрактних класів. Однак інтерфейси не можуть зберігати стан, тоді як абстрактні класи можуть.

Це означає, що інтерфейс може мати властивість, але він повинен бути абстрактним або повинен забезпечувати реалізації доступу. Хоча властивість абстрактного класу не є обов’язковою для абстрактності.

Цікаві статті...