Модификатор public

Модификатор public является модификатором видимости по умолчанию в Kotlin и делает элемент (класс, функцию, свойство) видимым везде, где виден содержащий его класс. Элементы, помеченные как public, доступны из любого другого кода в том же модуле, а также из других модулей, если сам класс также имеет соответствующую видимость.

Синтаксис

kotlinpublic class ClassName {
  public fun functionName() {}
  public val propertyName: Type = value
}
kotlinpublic fun functionName() {}
kotlinpublic val propertyName: Type = value

Пример

Создадим класс с public методами и свойствами:

kotlinpublic class User {
  public val name: String = "John"
  public var age: Int = 25

  public fun getUserInfo(): String {
    return "Name: $name, Age: $age"
  }
}

Теперь создадим экземпляр класса и вызовем public методы:

kotlinval user = User()
println(user.name)
println(user.age)
println(user.getUserInfo())

Результат выполнения кода:

kotlinString "John"
Int 25
String "Name: John, Age: 25"

Пример

Модификатор public является видимостью по умолчанию, поэтому его можно не указывать явно:

kotlinclass User {  // public по умолчанию
  val name: String = "John"  // public по умолчанию
  fun getUserInfo(): String {  // public по умолчанию
    return "Name: $name"
  }
}

Пример

public функции верхнего уровня доступны из любого места:

kotlin// File: utils.kt
public fun formatText(text: String): String {
  return text.uppercase()
}
kotlin// File: main.kt
val formatted = formatText("hello")
println(formatted)

Результат выполнения кода:

kotlinString "HELLO"

Пример

public свойства с пользовательскими методами доступа:

kotlinclass Rectangle {
  public var width: Int = 0
    get() = field
    set(value) {
      field = if (value > 0) value else 0
    }

  public var height: Int = 0
    get() = field
    set(value) {
      field = if (value > 0) value else 0
    }

  public val area: Int
    get() = width * height
}
kotlinval rect = Rectangle()
rect.width = 10
rect.height = 5
println(rect.area)

Результат выполнения кода:

kotlinInt 50

Смотрите также

  • модификатор private,
    который ограничивает видимость элемента пределами containing класса
  • модификатор protected,
    который делает элемент видимым в классе и его подклассах
  • модификатор internal,
    который делает элемент видимым в пределах текущего модуля
  • ключевое слово class,
    которое используется для объявления классов