Учебники

Котлин — Контроль видимости

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

Частный

Классы, методы и пакеты могут быть объявлены с частным модификатором. Как только что-либо объявлено как частное, оно будет доступно в его непосредственной области видимости. Например, личный пакет может быть доступен в этом конкретном файле. Закрытый класс или интерфейс могут быть доступны только его элементам данных и т. Д.

private class privateExample {
   private val i = 1
   private val doSomething() {
   }
}

В приведенном выше примере класс «privateExample» и переменная i могут быть доступны только в одном и том же файле Kotlin, где он упоминается, поскольку все они объявлены как private в блоке объявлений.

защищенный

Защищенный — это еще один модификатор доступа для Kotlin, который в настоящее время недоступен для объявления верхнего уровня, так как ни один пакет не может быть защищен. Защищенный класс или интерфейс виден только его подклассу.

class A() {
   protected val i = 1
}
class B : A() {
   fun getValue() : Int {
      return i
   }
}

В приведенном выше примере переменная «i» объявлена ​​как защищенная, следовательно, она видна только своему подклассу.

внутренний

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

class internalExample {
   internal val i = 1
   internal fun doSomething() {
   }
}

В приведенном выше примере метод с именем «doSomething» и переменная упоминаются как внутренние, следовательно, эти два поля могут быть доступны только внутри пакета, в котором он объявлен.

общественного

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

class publicExample {
   val i = 1
   fun doSomething() {
   }
}

В приведенном выше примере мы не упомянули ни одного модификатора, поэтому все эти методы и переменные по умолчанию общедоступны.