Sobes.tech
Junior

Разкажете за модификаторите за достъп в Java и Kotlin.

sobes.tech AI

Отговор от AI

В Java:

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

В Kotlin:

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

Разлики:

  • В Kotlin няма модификатор "package-private", неговият еквивалент е internal с различен scope (модул).
  • В Kotlin protected не предоставя достъп в рамките на пакета, както в Java.
  • В Kotlin private може да се използва и за декларации на ниво топ-левъл (функции, свойства) във файл, като ги прави достъпни само вътре в този файл.
// Пример в 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() {} // Виден в модула
}