מודיפיירים לראות ב-Kotlin – ציבורי, מוגן, פנימי, פרטי

במדריך הזה, נדבר על מגוון ה-Visibility Modifiers הזמינים בתכנות ב-Kotlin.

Visibility Modifiers ב-Kotlin

Visibility Modifiers הם מודיפיקטורים שכאשר מתווספים ל- class/interface/property/function ב-Kotlin, הם מגדירים את המקומות בהם היא גלויה ומאיפה ניתן לגשת אליה. ל-setters של properties ב-Kotlin יכול להיות מודיפיקטור נפרד מה-property עצמו. ל-getters אין אפשרות להגדיר מודיפיקטור גלויה, הם משתמשים באותו מודיפיקטור כזה של ה-property.

  • public
  • protected
  • internal
  • private

Public Modifier

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

כל ההגדרות הנלמדות כאן נמצאות ברמה העליונה של הקובץ. כולן הן פומביות. אם אנו לא מציינים את ההגדרות של חברי ה-class, הן יהיו פומביות (אלא אם כי הן נמצאות בעמידה).

Protected Modifier

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
    }
}

כיתות שאינן מחלקה מורשית של Pr אין להן גישה להכרזות המוגנות, כאשר הן מוחלפות הן יש להן אותו מודיפיקטור מוגן במחלקה המורשית אלא אם כן משנים אותם באופן מפורש.

open class Pr{
    open protected val i = 0
}

class Another : Pr(){

    fun iValue() : Int
    {
        return i
    }
    
    override val i = 5 //protected visibility
}

המושג של מודיפיקטורים מוגנים ב-Kotlin שמוגדר לעיל שונה מאשר ב-Java.

מודיפיקטור Internal

ה-Moder Internal הוא מודיפיקטור חדש הזמין ב-Kotlin שאין ב-Java. בהגדרת הכרזה כ-internal אומר שהיא תהיה זמינה במודול הנוכחי בלבד. ב-Kotlin, ביטוי "מודול" מתייחס לקבוצת קבצים שנקמפלים ביחד.

internal class A {
}

internal val x = 0

הם לא יהיו גלויים מחוץ למודול הנוכחי. מודיפיקטור Internal שימושי כאשר יש צורך להסתיר יישות מסוימת במימושים של ספריות מהמשתמשים. זה לא היה אפשרי באמצעות הראות פרטית בחבילה ב-Java.

מודיפיקטור Private

מודיפיקטור Private אינו מאפשר להכרזות להיות גלויות מחוץ לטווח הנוכחי.

var setterVisibility: String = "abc"
private set

open class Pr{
    open protected val i = 0

    fun iValue() : Int
    {
        setterVisibility = 10
        return setterVisibility
    }
}

מאחר ו-Kotlin מאפשרת הגדרות ראשיות מרובות, הקוד למעלה עובד. הלהלן אינו עובד.

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) {
 ... 
}

בדרך כלל, למחלקות יש ברירת מחדל בניית קונסטרוקטורים פומביים. באיזור שבו המחלקה הולכת, הקונסטרוקטור הולך אחריה. אנו צריכים לקבוע את מודיפיקטור הנראות על הקונסטרוקטור בהגדרה עצמה. לכן Kotlin משתמשת במודיפיקטורים שונים מJava, protected ו-internal, בדרך שונה. גם המודיפיקטור הברירת מחדל של Java הוא פרטי לחבילה, שאינו קיים ב-Kotlin עדיין. זה מסיים את המדריך המהיר הזה על מודיפיקטורים של נראות ב-Kotlin.

Source:
https://www.digitalocean.com/community/tutorials/kotlin-visibility-modifiers-public-protected-internal-private