Назад к вопросам
Junior
97
questionbank

Расскажи о модификаторах доступа в Java и Kotlin.

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

В Java:

  • public: доступен из любого места.
  • protected: доступен внутри класса, пакета и подклассов.
  • (без модификатора): доступен внутри пакета (package-private).
  • private: доступен только внутри класса.

В Kotlin:

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

Различия:

  • В Kotlin нет модификатора "package-private", его аналог — internal с другим скоупом (модуль).
  • В Kotlin protected не предоставляет доступ в пределах пакета, как в Java.
  • В Kotlin private можно использовать и для top-level объявлений (функций, свойств) в файле, делая их доступными только внутри этого файла.
// Пример в Kotlin
package com.example.myapp

private const val API_KEY = "secret" // Виден только в этом файле

class MyClass {
    private val internalState = 1 // Виден только внутри MyClass
    protected fun protectedMethod() {} // Виден в MyClass и его подклассах
    internal fun internalMethod() {} // Виден внутри модуля
}