НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
1267 of 1310 menu

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

Модификатор private используется для ограничения видимости членов класса. Члены, объявленные с этим модификатором, доступны только внутри класса, в котором они объявлены. Это обеспечивает инкапсуляцию и защищает внутреннее состояние объекта от внешнего вмешательства.

Синтаксис

private val propertyName: Type = value private var propertyName: Type = value private fun functionName() { } private class ClassName { }

Пример

Создадим класс с приватным свойством и методом:

class Person { private val id: Int = 12345 private var name: String = "John" fun printInfo() { println("ID: $id, Name: $name") } private fun generateSecretCode(): String { return "CODE${id}${name.length}" } }

Пример

Попытка доступа к приватным членам извне класса вызовет ошибку компиляции:

val person = Person() person.printInfo() // Ошибка компиляции: Cannot access 'id': it is private in 'Person' // println(person.id) // Ошибка компиляции: Cannot access 'generateSecretCode': it is private in 'Person' // person.generateSecretCode()

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

ID: 12345, Name: John

Пример

Приватные члены доступны только внутри того же класса:

class BankAccount { private var balance: Double = 0.0 fun deposit(amount: Double) { if (amount > 0) { balance += amount } } fun withdraw(amount: Double): Boolean { if (amount > 0 && balance >= amount) { balance -= amount return true } return false } fun getBalance(): Double { return balance } } val account = BankAccount() account.deposit(1000.0) account.withdraw(300.0) println(account.getBalance())

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

Double 700.0

Пример

Приватные члены не наследуются и не доступны в производных классах:

open class BaseClass { private val secret: String = "base secret" protected val protectedSecret: String = "protected secret" } class DerivedClass : BaseClass() { fun showSecrets() { // Ошибка: Cannot access 'secret': it is private in 'BaseClass' // println(secret) println(protectedSecret) } }

Пример

Приватные конструкторы используются для создания классов, которые нельзя инстанциировать извне:

class Singleton private constructor() { companion object { val instance: Singleton by lazy { Singleton() } } fun doWork() { println("Working...") } } // val singleton = Singleton() // Ошибка: private constructor val singleton = Singleton.instance singleton.doWork()

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

String "Working..."

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

  • модификатор public,
    который обеспечивает максимальную видимость членов класса
  • модификатор protected,
    который ограничивает видимость членами класса и наследниками
  • модификатор internal,
    который ограничивает видимость в пределах модуля
  • ключевое слово class,
    которое используется для объявления классов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить