سطح دسترسی

سطح دسترسی یا Access Modifier، مشخص می‌کند که متدها و فیلدهای یک کلاس، در چه جای برنامه قابل دسترسی هستند. در این درس می‌خواهیم به سطح دسترسی private و public نگاهی بیندازیم. سطح دسترسی public زمانی مورد استفاده قرار می‌گیرد که شما بخواهید به یک متد یا فیلد در خارج از کلاس و حتی پروژه دسترسی یابید. به عنوان مثال به کد زیر توجه کنید :

  1: class Test
  2: {
  3:     var number: Int = 0
  4: }
  5: 
  6: fun main(args: Array<String>)
  7: {
  8:     val x = Test()
  9: 
 10:     x.number = 10
 11: }

در این مثال یک کلاس به نام Test تعریف کرده‌ایم (خطوط 4-1). سپس یک فیلد یا عضو داده‌ای در داخل کلاس Test تعریف می‌کنیم (خط 3). اگر سطح دسترسی را صریحا مشخص نکنیم، در حالت پیشفرض سطح دسترسی به صورت public در نظر گرفته می شود. یعنی خط 3 کد بالا با کد زیر برابر است :

public var number: Int = 0

با تعریف این عضو به صورت public می‌توانیم آن را در خارج از کلاس Test و در داخل متد ()main مقدار دهی کنیم. حال سطح دسترسی public را به private تغییر می‌دهیم :

  1: class Test 
  2: {
  3:     private val number: Int = 0
  4: }
  5: 
  6: fun main(args: Array<String>) 
  7: {
  8:     val x = Test()
  9: 
 10:     x.number = 10
 11: }

همانطور که در مثال بالا مشاهده می‌کنید این بار از کلمه private در تعریف فیلد number استفاده کرده‌ایم (خط 3). وقتی که برنامه را کامپایل می‌کنیم با خطا مواجه می‌شویم چون number در داخل متد ()main و یا هر کلاس دیگر قابل دسترسی نیست.

نکته دیگر اینکه، برای سازنده کلاس هم می توان سطح دسترسی ایجاد کرد. در حالت پیشفرض سازنده ها دارای سطح دسترسی public هستند و می توان آن را به private تغییر داد ولی باید صریحا کلمه constructor را ذکر کنید :

class Test private constructor(val number: Int) 
{
    // code
}

سطوح دسترسی دیگری هم در Kotlin وجود دارد که بعد از مبحث وراثت در درسهای آینده در مورد آنها توضیح خواهیم داد.