Класс и объекты Kotlin (с примерами)

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

Kotlin поддерживает как функциональное, так и объектно-ориентированное программирование.

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

Объектно-ориентированное программирование (ООП)

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

Эти объекты имеют две общие характеристики:

  • штат
  • поведение

Возьмем несколько примеров:

  1. Лампа - это объект
    • Он может быть включен или выключен.
    • Можно turn onи turn offлампочку (поведение).
  2. Велосипед - это объект
    • Имеет текущую передачу, два колеса, количество передач и т.д.
    • Он имеет поведение при торможении, ускорении, переключении передач и т. Д.

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

Рекомендуемая литература: Что такое объект?

Котлин Класс

Прежде чем создавать объекты в Kotlin, вам необходимо определить класс.

Класс - это план объекта.

Мы можем думать о классе как об эскизе (прототипе) дома. Он содержит все подробности о этажах, дверях, окнах и т. Д. На основе этих описаний мы строим дом. Дом - это объект.

Поскольку из одного и того же описания можно построить множество домов, мы можем создать множество объектов из одного класса.

Как определить класс в Котлине?

Для определения класса в Kotlin используется classключевое слово:

 class ClassName (// свойство // функция-член…) 

Вот пример:

 class Lamp (// свойство (элемент данных) private var isOn: Boolean = false // функция-член fun turnOn () (isOn = true) // функция-член fun turnOff () (isOn = false))

Здесь мы определили класс с именем Lamp.

Класс имеет одно свойство isOn (определенное так же, как и переменную) и две функции-члены turnOn()и turnOff().

Рекомендуемая литература: функции Kotlin

В Kotlin свойство либо должно быть инициализировано, либо должно быть объявлено abstract( посетите: Kotlin Abstract Class, чтобы узнать больше). В приведенном выше примере свойство isOn инициализируется значением false.

Классы, объекты, свойства, функции-члены и т. Д. Могут иметь модификаторы видимости. Например, свойство isOn является частным. Это означает, что свойство isOn можно изменить только внутри класса Lamp.

Другие модификаторы видимости:

  • private - виден (доступен) только изнутри класса.
  • public - виден везде.
  • protected - виден классу и его подклассу.
  • internal - любой клиент внутри модуля может получить к ним доступ.

Вы узнаете о том, protectedа internalпозже модификаторов в Котлин видимости модификаторов статьи.

Если вы не укажете модификатор видимости, он будет publicпо умолчанию.

В приведенной выше программе turnOn()и turnOff()функции-члены являются publicчастными, а свойство isOn является закрытым.

Котлинские объекты

Когда класс определен, определяется только спецификация для объекта; память или хранилище не выделяются.

Чтобы получить доступ к членам, определенным в классе, вам необходимо создать объекты. Создадим объекты класса Lamp.

 class Lamp ( // property (data member) private var isOn: Boolean = false // member function fun turnOn() ( isOn = true ) // member function fun turnOff() ( isOn = false ) ) fun main(args: Array) ( val l1 = Lamp() // create l1 object of Lamp class val l2 = Lamp() // create l2 object of Lamp class )

Эта программа создает два объекта l1 и l2 класса Lamp. Свойство isOn для ламп l1 и l2 будет иметь значение false.

Как получить доступ к участникам?

Вы можете получить доступ к свойствам и функциям-членам класса, используя .нотацию. Например,

 l1.turnOn ()

Этот оператор вызывает функцию turnOn () для объекта l1.

Возьмем другой пример:

 l2.isOn = истина

Here, we tried to assign true to isOn property of l2 object. Note that, isOn property is private, and if you try to access isOn from outside the class, an exception is thrown.

Example: Kotlin Class and Object

 class Lamp ( // property (data member) private var isOn: Boolean = false // member function fun turnOn() ( isOn = true ) // member function fun turnOff() ( isOn = false ) fun displayLightStatus(lamp: String) ( if (isOn == true) println("$lamp lamp is on.") else println("$lamp lamp is off.") ) ) fun main(args: Array) ( val l1 = Lamp() // create l1 object of Lamp class val l2 = Lamp() // create l2 object of Lamp class l1.turnOn() l2.turnOff() l1.displayLightStatus("l1") l2.displayLightStatus("l2") )

When you run the program, the output will be:

 l1 Lamp is on. l2 Lamp is off.

In the above program,

  • Lamp class is created.
  • The class has a property isOn and three member functions turnOn(), turnOff() and displayLightStatus().
  • Two objects l1 and l2 of Lamp class are created in the main() function.
  • Here, turnOn() function is called using l1 object: l1.turnOn(). This method sets isOn instance variable of l1 object to true.
  • And, turnOff() function is called using l2 object: l1.turnOff(). This method sets isOff instance variable of l2 object to false.
  • Затем displayLightStatus()для объектов l1 и l2 вызывается функция, которая печатает соответствующее сообщение в зависимости от того, истинно ли свойство isOn или false.

Обратите внимание, что свойство isOn инициализируется falseвнутри класса. Когда объект класса создается, свойство isOn для объекта инициализируется falseавтоматически. Таким образом, объекту l2 необязательно вызывать turnOff()для установки свойства isOn в значение false.

Например:

 class Lamp ( // property (data member) private var isOn: Boolean = false // member function fun turnOn() ( isOn = true ) // member function fun turnOff() ( isOn = false ) fun displayLightStatus() ( if (isOn == true) println("lamp is on.") else println("lamp is off.") ) ) fun main(args: Array) ( val lamp = Lamp() lamp.displayLightStatus() ) 

Когда вы запустите программу, вывод будет:

 лампа выключена.

Эта статья - всего лишь введение в объектно-ориентированное программирование на Kotlin. Чтобы узнать больше, прочтите эти главы по порядку:

  • Конструкторы и инициализаторы Kotlin
  • Котлин это ключевое слово
  • Вложенный класс Kotlin

Интересные статьи...