في هذا البرنامج التعليمي، سنناقش مختلف المحددات المرئية المتاحة في برمجة Kotlin.
محددات الرؤية في Kotlin
محددات الرؤية هي محددات تُلحق بفئة / واجهة / خاصية / وظيفة في Kotlin، حيث تحدد حيث يمكن رؤيتها ومن أين يمكن الوصول إليها. يمكن أن تحتوي مُعينات الخصائص في Kotlin على محدد منفصل عن الخاصية. لا يمكن أن تحتوي مُستقبلات القيم على محدد للرؤية. إنها تستخدم نفس المحدد الذي تم استخدامه للخاصية. فيما يلي محددات الرؤية:
- public
- protected
- internal
- private
محدد العام
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
جميع الإعلانات أعلاه هي في الطبقة العليا من الملف. كلها عامة. إذا لم نذكر إعلان أعضاء الفئة، فإنها عامة (ما لم يتم تجاوزها).
محدد الوصول المحمي
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 لا يمكنها الوصول إلى i
التصريحات التي تم حمايتها، عند تجاوزها ستكون لها نفس الوسيط المحمي في الفئة الفرعية ما لم تقم بتغييرها صراحة.
open class Pr{
open protected val i = 0
}
class Another : Pr(){
fun iValue() : Int
{
return i
}
override val i = 5 //protected visibility
}
مفهوم الوسيطات المحمية في Kotlin الذي تم تعريفه أعلاه يختلف عن ذلك في Java.
الوسيط الداخلي
الوسيط الداخلي هو وسيط جديد متاح في Kotlin والذي لا يوجد في Java. تعيين تصريح كداخلي يعني أنه سيكون متاحًا في نفس الوحدة فقط. بواسطة الوحدة في Kotlin، نعني مجموعة من الملفات التي يتم تجميعها معًا.
internal class A {
}
internal val x = 0
هذه لن تكون مرئية خارج الوحدة الحالية. الوسيط الداخلي مفيد عندما تحتاج إلى إخفاء تنفيذات المكتبة المحددة عن المستخدمين. لم يكن ذلك ممكنًا باستخدام الرؤية الخاصة بالحزمة في Java.
الوسيط الخاص
الوسيط الخاص لا يسمح برؤية التصريحات خارج النطاق الحالي.
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. أيضًا، المحدد الافتراضي في Java هو الحزمة-خاصة التي لا توجد في Kotlin حتى الآن. هذا يضع نهاية لهذا البرنامج التعليمي السريع حول محددي الرؤية في Kotlin.