Modificadores de visibilidade Kotlin

Neste artigo, você aprenderá sobre todos os 4 modificadores de visibilidade em Kotlin e como eles funcionam em diferentes cenários.

Modificadores de visibilidade são palavras-chave que definem a visibilidade (acessibilidade) de classes, objetos, interface, construtores, funções, propriedades e seus configuradores. (Você não pode definir o modificador de visibilidade de getters, pois eles sempre têm a mesma visibilidade da propriedade.)

Em artigo Kotlin classe e objetos, você aprendeu sobre modificadores de visibilidade publice privateem breve. Você aprenderá sobre mais dois modificadores de visibilidade protectede internal(bem como publice private) em detalhes.

Modificadores de visibilidade dentro do pacote

Um pacote organiza um conjunto de funções, propriedades e classes, objetos e interfaces relacionadas. Leitura recomendada: Pacotes Kotlin

Modificador Descrição
público declarações são visíveis em todos os lugares
privado visível dentro do arquivo que contém a declaração
interno visível dentro do mesmo módulo (um conjunto de arquivos Kotlin compilados juntos)
protegido não disponível para pacotes (usado para subclasses)

Nota: Se o modificador de visibilidade não for especificado, é publicpor padrão.

Vamos dar um exemplo:

 // nome do arquivo: hello.kt package test fun function1 () () // público por padrão e visível em qualquer lugar private fun function2 () () // visível dentro de hello.kt internal fun function3 () () // visível dentro do mesmo módulo nome da var = "Foo" // visível em qualquer lugar get () = campo // visível dentro de hello.kt (igual à sua propriedade) conjunto privado (valor) (// visível dentro de campo hello.kt = valor) classe privada classe1 () // visível dentro de hello.kt

Modificadores de visibilidade dentro de classes e interfaces

Veja como os modificadores de visibilidade funcionam para membros (funções, propriedades) declarados dentro de uma classe:

Modificador Descrição
público visível para qualquer cliente que possa ver a classe declarante
privado visível apenas dentro da classe
protegido visível dentro da classe e suas subclasses
interno visível para qualquer cliente dentro do módulo que pode ver a classe declarante

Nota: Se você substituir um protectedmembro na classe derivada sem especificar sua visibilidade, sua visibilidade também será protected.

Vamos dar um exemplo:

 open class Base () (var a = 1 // público por padrão privado var b = 2 // privado para classe Base protegido open val c = 3 // visível para Base e classe Derivada interno val d = 4 // visível dentro do mesmo módulo protegido fun e () () // visível para a classe Base e Derived) classe Derived: Base () (// a, c, d e e () da classe Base são visíveis // b não é visível override val c = 9 // c é protegido) fun main (args: Array) (val base = Base () // base.a e base.d são visíveis // base.b, base.c e base .e () não são visíveis val derivados = Derivado () // derivado.c não é visível) 

Alterando a Visibilidade de um Construtor

Por padrão, a visibilidade de um construtor é public. No entanto, você pode alterá-lo. Para isso, você precisa adicionar explicitamente a constructorpalavra-chave.

O construtor é publicpor padrão no exemplo abaixo:

 classe Teste (val a: Int) (// código) 

Veja como você pode alterar sua visibilidade.

 classe Teste construtor privado (val a: Int) (// código)

Aqui está o construtor private.

Observação: no Kotlin, funções, variáveis ​​e classes locais não podem ter modificadores de visibilidade.

Artigos interessantes...