스칼라의 접근 한정자(access modifier)는 자바와 비슷하다. 그러나 하나 더 추가되는 내용이 있다. 


수식자(qualifier)를 사용해 스칼라의 접근 한정자가 확장될 수 있다. private[X] 또는 protected[X] 타입의 한정자는 각각 접근이 X까지 private 또는 protected임을 의미한다. 여기서 X는 패키지, 클래스, 싱글턴 오브젝트를 나타낸다.


다음 예를 살펴보자.



scala> :paste

// Entering paste mode (ctrl-D to finish)



package Country {

package Professional {

  class Executive {

    private[Professional] var jobTitle = "Engineer"

    private[Country] var friend = "Andrew Ng"

    protected[this] var option = "X"


    def getInfo(another : Executive) {

      println(another.jobTitle) // 동작한다

      println(another.friend) // 동작한다

      println(another.secret) //에러가 발생한다

      println(this.option) // 동작한다

    }

  }

}

}


  • jobTitle 변수는 Professional 패키지 내의 모든 클래스에서 접근할 수 있다.

  • friend 변수는 Country 패키지내의 모든 클래스에서 접근할 수 있다.

  • secret 변수는 인스턴스 메소드(this)의 암시(implicit) 오브젝트에만 접근할 수 있다.



Posted by '김용환'
,