Kotlin - การควบคุมการมองเห็น
ในบทนี้เราจะเรียนรู้เกี่ยวกับตัวปรับแต่งต่างๆที่มีอยู่ในภาษา Kotlin Access modifierใช้เพื่อ จำกัด การใช้งานตัวแปรวิธีการและคลาสที่ใช้ในแอปพลิเคชัน เช่นเดียวกับภาษาการเขียนโปรแกรม OOP อื่น ๆ ตัวปรับแต่งนี้สามารถใช้ได้กับหลาย ๆ ที่เช่นในส่วนหัวของคลาสหรือการประกาศเมธอด มีตัวดัดแปลงการเข้าถึงสี่ตัวที่มีอยู่ใน Kotlin
เอกชน
คลาสวิธีการและแพ็กเกจสามารถประกาศได้ด้วยตัวปรับแต่งส่วนตัว เมื่อสิ่งใดถูกประกาศว่าเป็นส่วนตัวแล้วสิ่งนั้นจะสามารถเข้าถึงได้ภายในขอบเขตทันที ตัวอย่างเช่นแพคเกจส่วนตัวสามารถเข้าถึงได้ภายในไฟล์นั้น ๆ คลาสส่วนตัวหรืออินเทอร์เฟซสามารถเข้าถึงได้โดยสมาชิกข้อมูลเท่านั้น ฯลฯ
private class privateExample {
private val i = 1
private val doSomething() {
}
}
ในตัวอย่างข้างต้นคลาส “privateExample” และตัวแปร i ทั้งสองสามารถเข้าถึงได้เฉพาะในไฟล์ Kotlin เดียวกันโดยที่กล่าวถึงเนื่องจากทั้งหมดถูกประกาศเป็นส่วนตัวในบล็อกการประกาศ
มีการป้องกัน
Protected เป็นตัวแก้ไขการเข้าถึงอื่นสำหรับ Kotlin ซึ่งขณะนี้ไม่สามารถใช้งานได้สำหรับการประกาศระดับบนสุดเช่นเดียวกับแพ็คเกจใด ๆ ที่ไม่สามารถป้องกัน คลาสหรืออินเทอร์เฟซที่ได้รับการป้องกันจะมองเห็นได้เฉพาะคลาสย่อยเท่านั้น
class A() {
protected val i = 1
}
class B : A() {
fun getValue() : Int {
return i
}
}
ในตัวอย่างข้างต้นตัวแปร “i” ได้รับการประกาศว่าได้รับการป้องกันดังนั้นจึงสามารถมองเห็นได้เฉพาะในคลาสย่อยเท่านั้น
ภายใน
Internal คือตัวปรับแต่งที่เพิ่มเข้ามาใหม่ที่แนะนำใน Kotlin หากมีการทำเครื่องหมายว่าเป็นช่องภายในช่องนั้นจะอยู่ในช่องภายใน แพคเกจภายในจะมองเห็นได้เฉพาะภายในโมดูลที่ใช้งานเท่านั้น อินเทอร์เฟซคลาสภายในจะมองเห็นได้เฉพาะคลาสอื่นที่อยู่ภายในแพ็กเกจเดียวกันหรือโมดูล ในตัวอย่างต่อไปนี้เราจะดูวิธีการใช้งานวิธีการภายใน
class internalExample {
internal val i = 1
internal fun doSomething() {
}
}
ในตัวอย่างข้างต้นเมธอดชื่อ“ doSomething” และตัวแปรถูกกล่าวถึงเป็นแบบ internal ดังนั้นทั้งสองฟิลด์นี้จึงสามารถเข้าถึงได้ภายในแพ็กเกจที่มีการประกาศไว้เท่านั้น
สาธารณะ
ตัวปรับแต่งสาธารณะสามารถเข้าถึงได้จากทุกที่ในพื้นที่ทำงานของโครงการ หากไม่ได้ระบุตัวแก้ไขการเข้าถึงโดยค่าเริ่มต้นจะอยู่ในขอบเขตสาธารณะ ในตัวอย่างก่อนหน้านี้เราไม่ได้กล่าวถึงตัวปรับแต่งใด ๆ ดังนั้นทั้งหมดจึงอยู่ในขอบเขตสาธารณะ ต่อไปนี้เป็นตัวอย่างเพื่อทำความเข้าใจเพิ่มเติมเกี่ยวกับวิธีการประกาศตัวแปรสาธารณะหรือวิธีการ
class publicExample {
val i = 1
fun doSomething() {
}
}
ในตัวอย่างข้างต้นเราไม่ได้กล่าวถึงตัวปรับแต่งใด ๆ ดังนั้นวิธีการและตัวแปรเหล่านี้ทั้งหมดจึงเป็นค่าเริ่มต้นสาธารณะ