Учебники

Котлин — Класс и Объект

В этой главе мы изучим основы объектно-ориентированного программирования (ООП) с использованием Kotlin. Мы узнаем о классе и его объекте, а также о том, как играть с этим объектом. По определению ООП класс — это план сущности во время выполнения, а объект — это его состояние, которое включает в себя как его поведение, так и состояние. В Kotlin объявление класса состоит из заголовка класса и тела класса, окруженного фигурными скобками, подобно Java.

Class myClass { // class Header 

   // class Body
}

Как и Java, Kotlin также позволяет создавать несколько объектов класса, и вы можете свободно включать его члены и функции. Мы можем контролировать видимость переменных членов класса, используя разные ключевые слова, которые мы изучим в главе 10 — Контроль видимости. В следующем примере мы создадим один класс и его объект, с помощью которого мы получим доступ к различным членам данных этого класса.

Live Demo

class myClass {
   // property (data member)
   private var name: String = "Tutorials.point"
   
   // member function
   fun printMe() {
      print("You are at the best Learning website Named-"+name)
   }
}
fun main(args: Array<String>) {
   val obj = myClass() // create obj object of myClass class
   obj.printMe()
}

Приведенный выше фрагмент кода выдаст следующий вывод в браузере, где мы вызываем printMe () myClass, используя его собственный объект.

You are at the best Learning website Named- Tutorials.point

Вложенный класс

По определению, когда класс был создан внутри другого класса, он вызывается как вложенный класс. В Kotlin вложенный класс по умолчанию является статическим, поэтому к нему можно получить доступ без создания какого-либо объекта этого класса. В следующем примере мы увидим, как Kotlin интерпретирует наш вложенный класс.

Live Demo

fun main(args: Array<String>) {
   val demo = Outer.Nested().foo() // calling nested class method
   print(demo)
}
class Outer {
   class Nested {
      fun foo() = "Welcome to The TutorialsPoint.com"
   }
}

Приведенный выше фрагмент кода выдаст следующий вывод в браузере.

Welcome to The TutorialsPoint.com

Внутренний класс

Когда вложенный класс помечается как «внутренний», он будет называться внутренним классом. Внутренний класс может быть доступен с помощью члена данных внешнего класса. В следующем примере мы будем обращаться к члену данных внешнего класса.

Live Demo

fun main(args: Array<String>) {
   val demo = Outer().Nested().foo() // calling nested class method
   print(demo)
}
class Outer {
   private val welcomeMessage: String = "Welcome to the TutorialsPoint.com"
   inner class Nested {
      fun foo() = welcomeMessage
   }
}

Приведенный выше фрагмент кода выдаст следующий вывод в браузере, где мы вызываем вложенный класс, используя конструктор по умолчанию, предоставляемый компиляторами Kotlin во время компиляции.

Welcome to the TutorialsPoint.com

Аноним Внутренний Класс

Анонимный внутренний класс — это довольно хорошая концепция, которая делает жизнь программиста очень простой. Всякий раз, когда мы реализуем интерфейс, концепция анонимного внутреннего блока входит в картину. Концепция создания объекта интерфейса с использованием ссылки на объект во время выполнения называется анонимным классом. В следующем примере мы создадим интерфейс и создадим объект этого интерфейса, используя механизм класса Anonymous Inner.

Live Demo

fun main(args: Array<String>) {
   var programmer :Human = object:Human // creating an instance of the interface {
      override fun think() { // overriding the think method
         print("I am an example of Anonymous Inner Class ")
      }
   }
   programmer.think()
}
interface Human {
   fun think()
}

Приведенный выше фрагмент кода выдаст следующий вывод в браузере.

I am an example of Anonymous Inner Class 

Введите псевдонимы

Псевдонимы являются собственностью компилятора Kotlin. Он обеспечивает гибкость создания нового имени существующего типа, но не создает новый тип. Если имя типа слишком длинное, вы можете легко ввести более короткое имя и использовать его для будущего использования. Псевдонимы типа действительно полезны для сложного типа. В последней версии Kotlin отменил поддержку псевдонимов типов, однако, если вы используете старую версию Kotlin, вы можете использовать ее следующим образом: