Sobes.tech
Junior

Como é que a encapsulação é realizada em Kotlin?

sobes.tech IA

Resposta da IA

A encapsulação em Kotlin é alcançada através de modificadores de acesso e propriedades.

Modificadores de acesso:

  • public: acessível de qualquer lugar (padrão).
  • internal: acessível dentro de um mesmo módulo.
  • protected: acessível na sua classe e nas subclasses.
  • private: acessível apenas dentro da classe onde é declarado.

As propriedades são usadas para gerenciar o acesso aos dados da classe. Elas podem ter um getter e um setter, que podem ser sobrescritos para adicionar lógica ao ler ou escrever o valor.

class Person {
    // Campo privado, acessível apenas dentro da classe
    private var _name: String = ""

    // Propriedade com getter público e setter privado
    var name: String
        get() = _name
        private set(value) {
            _name = value
        }

    // Função pública para definir o nome, controlando a entrada
    fun setName(newName: String) {
        if (newName.isNotBlank()) {
            name = newName
        } else {
            println("O nome não pode estar em branco")
        }
    }
}

fun main() {
    val person = Person()
    person.setName("Alice") // Usamos o método controlado para alterar
    println(person.name)    // Lê o valor através do getter
    // person.name = "Bob"   // Erro de compilação, o setter é privado
}