Sobes.tech
Junior

Fale sobre os modificadores de acesso em Java e Kotlin.

sobes.tech IA

Resposta da IA

Em Java:

  • public: acessível de qualquer lugar.
  • protected: acessível dentro da classe, pacote e subclasses.
  • (sem modificador): acessível dentro do pacote (package-private).
  • private: acessível apenas dentro da classe.

Em Kotlin:

  • public: acessível de qualquer lugar (padrão).
  • internal: acessível dentro do módulo.
  • protected: acessível dentro da classe e suas subclasses (diferente do Java em relação ao acesso no pacote).
  • private: acessível apenas dentro da classe/arquivo.

Diferenças:

  • Em Kotlin, não há o modificador "package-private", seu equivalente é internal com um escopo diferente (o módulo).
  • Em Kotlin, protected não fornece acesso dentro do pacote, como em Java.
  • Em Kotlin, private também pode ser usado para declarações de nível superior (funções, propriedades) em um arquivo, tornando-as acessíveis apenas dentro desse arquivo.
// Exemplo em Kotlin
package com.example.myapp

private const val API_KEY = "secret" // Visível apenas neste arquivo

class MyClass {
    private val internalState = 1 // Visível apenas dentro de MyClass
    protected fun protectedMethod() {} // Visível em MyClass e suas subclasses
    internal fun internalMethod() {} // Visível dentro do módulo
}