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

ในตัวอย่างข้างต้นเราไม่ได้กล่าวถึงตัวปรับแต่งใด ๆ ดังนั้นวิธีการและตัวแปรเหล่านี้ทั้งหมดจึงเป็นค่าเริ่มต้นสาธารณะ