Sobes.tech
Junior

Opowiedz o modyfikatorach dostępu w Java i Kotlin.

sobes.tech AI

Odpowiedź od AI

W Java:

  • public: dostępny z dowolnego miejsca.
  • protected: dostępny w obrębie klasy, pakietu i podklas.
  • (bez modyfikatora): dostępny w obrębie pakietu (package-private).
  • private: dostępny tylko w obrębie klasy.

W Kotlin:

  • public: dostępny z dowolnego miejsca (domyślnie).
  • internal: dostępny w module.
  • protected: dostępny w obrębie klasy i jej podklas (różni się od Java w zakresie dostępu w pakiecie).
  • private: dostępny tylko w obrębie klasy/pliku.

Różnice:

  • W Kotlinie nie ma modyfikatora "package-private", jego odpowiednikiem jest internal z innym zakresem (modułem).
  • W Kotlinie protected nie zapewnia dostępu w obrębie pakietu, jak w Java.
  • W Kotlinie private można używać także dla deklaracji na poziomie top-level (funkcji, właściwości) w pliku, czyniąc je dostępnymi tylko w tym pliku.
// Przykład w Kotlin
package com.example.myapp

private const val API_KEY = "secret" // Widoczny tylko w tym pliku

class MyClass {
    private val internalState = 1 // Widoczny tylko w MyClass
    protected fun protectedMethod() {} // Widoczny w MyClass i jej podklasach
    internal fun internalMethod() {} // Widoczny w module
}