Neste tutorial, discutiremos os vários Modificadores de Visibilidade disponíveis na programação Kotlin.
Modificadores de Visibilidade em Kotlin
Os Modificadores de Visibilidade são modificadores que, quando anexados a uma classe/interface/propriedade/função em Kotlin, definiriam onde ela é visível e de onde ela pode ser acessada. Os setters das propriedades em Kotlin podem ter um modificador separado da propriedade. Os getters não podem ter um modificador de visibilidade definido. Eles usam o mesmo modificador da propriedade. A seguir estão os modificadores de visibilidade:
- público
- protegido
- interno
- privado
Modificador Público
A Public Modifier is the default modifier in Kotlin. Just like the Java public modifier, it means that the declaration is visible everywhere.
class Hello{
}
public class H{
}
fun hi()
public fun hello()
val i = 0
public val j = 5
Todas as declarações acima estão no nível superior do arquivo. TODAS são públicas. Se não mencionarmos a declaração dos membros da classe, eles são públicos (a menos que sejam sobrepostos).
Modificador Protegido
A Protected Modifier in Kotlin: CANNOT be set on top-level declarations. Declarations that are protected in a class, can be accessed only in their subclasses.
open class Pr{
protected val i = 0
}
class Another : Pr{
fun iValue() : Int
{
return i
}
}
Classes que não são subclasses de Pr não podem acessar i
. Declarações que são protegidas, quando sobrescritas, terão o mesmo modificador protegido na subclasse, a menos que você as mude explicitamente.
open class Pr{
open protected val i = 0
}
class Another : Pr(){
fun iValue() : Int
{
return i
}
override val i = 5 //protected visibility
}
O conceito de Modificadores Protegidos em Kotlin, conforme definido acima, difere do Java.
Modificador Interno
Interno é um novo modificador disponível no Kotlin que não existe no Java. Definir uma declaração como interna significa que ela estará disponível apenas no mesmo módulo. Por módulo em Kotlin, queremos dizer um grupo de arquivos compilados juntos.
internal class A {
}
internal val x = 0
Essas não serão visíveis fora do módulo atual. O Modificador Interno é útil quando você precisa ocultar implementações específicas de biblioteca dos usuários. Isso não era possível usando a visibilidade package-private no Java.
Modificadores Privados
Os Modificadores Privados não permitem que as declarações sejam visíveis fora do escopo atual.
var setterVisibility: String = "abc"
private set
open class Pr{
open protected val i = 0
fun iValue() : Int
{
setterVisibility = 10
return setterVisibility
}
}
Já que o Kotlin permite várias definições no nível superior, o código acima funciona. O abaixo não funciona.
private open class ABC{
private val x = 6
}
private class BDE : ABC()
{
fun getX()
{
return x //x cannot be accessed here.
}
}
x is visibile only from inside its class. We can set private constructors in the following way:
class PRIV private constructor(a: String) {
...
}
Por padrão, as classes têm construtores públicos. Onde quer que a classe vá, o construtor a segue. Precisamos definir o modificador de visibilidade no próprio construtor. Assim, o Kotlin utiliza os modificadores protegido e interno de maneira diferente do Java. Além disso, o modificador padrão do Java é pacote-privado, o que não existe no Kotlin, até o momento. Isso encerra este rápido tutorial sobre Modificadores de Visibilidade no Kotlin.