Модификаторы доступа (видимости) в Kotlin — 4 типа

Модификаторы видимости или доступа — это ключевые слова, которые используются для ограничения использования класса, интерфейса, методов и свойств Kotlin в приложении. Эти модификаторы используются в нескольких местах, таких как заголовок класса или тело метода.

В Kotlin модификаторы видимости делятся на четыре разных типа:

  • public
  • protected
  • internal
  • private

Модификатор public

Публичный модификатор доступен из любой точки проекта. Это модификатор по умолчанию в Kotlin. Если какой-либо класс, интерфейс и т. д. не указаны с каким-либо модификатором доступа, то этот класс, интерфейс и т. д. используются в общедоступной области.

 
public class Example{ 
} 
class Demo{ 
} 
public fun hello() 
fun demo() 
public val x = 5 
val y = 10 

Все публичные объявления могут быть размещены в верхней части файла. Если член класса не указан, то по умолчанию он общедоступен.

protected модификатор

Защищенный модификатор с классом или интерфейсом позволяет видеть только его класс или подкласс. Защищенное объявление (при переопределении) в его подклассе также является protected модификатором, если оно не изменено явно.

 
open class Base{ 
    protected val i = 0 
} 
 
class Derived : Base(){ 
 
    fun getValue() : Int 
    { 
        return i 
    } 
} 

В Kotlin модификатор protected не может быть объявлен на верхнем уровне.

Переопределение защищенных типов

 
open class Base{ 
  open protected val i = 5 
} 
class Another : Base(){ 
    fun getValue() : Int 
    { 
        return i 
    } 
    override val i =10 
} 

internal модификатор

Внутренние модификаторы недавно добавлены в Kotlin, они недоступны в Java. Объявление чего-либо делает это поле помеченным как внутреннее поле. Модификатор internal делает поле видимым только внутри модуля, в котором оно реализовано.

 
internal class Example{ 
    internal val x = 5 
    internal fun getValue(){ 
 
    } 
} 
internal val y = 10 

Выше все поля объявлены как внутренние, которые доступны только внутри модуля, в котором они реализованы.

private в Kotlin

Частный модификатор private в Котлин позволяет сделать объявление доступным только внутри блока, в котором объявлены свойства, поля и т. д. Объявление частного модификатора не позволяет получить доступ за пределами области видимости. Частный пакет может быть доступен в этом конкретном файле.

 
private class Example { 
    private val x = 1 
     private valdoSomething() { 
    } 
} 

В приведенном выше примере класса val x и функция doSomthing() объявлены как частные. Класс «Example» доступен из того же исходного файла, «val x» и «fun doSomthing()» доступны в классе «Example».

Пример модификатора видимости

 
open class Base() { 
var a = 1 // public by default 
    private var b = 2 // private to Base class 
    protected open val c = 3  // visible to the Base and the Derived class 
    internal val d = 4 // visible inside the same module 
    protected fun e() { } // visible to the Base and the Derived class 
} 
 
class Derived: Base() { 
    // a, c, d, and e() of the Base class are visible 
    // b is not visible 
    override val c = 9 // c is protected 
} 
 
fun main(args: Array) { 
val base = Base() 
    // base.a and base.d are visible 
    // base.b, base.c and base.e() are not visible 
val derived = Derived() 
    // derived.c is not visible 
} 

Оцените статью