天天看點

Scala的通路權限控制

包、類、對象、成員的通路權限:

點選(此處)折疊或打開

  1. package spark{
  2.   package navigation{
  3.     private[spark] class Navigator{ //将Navigator的可見度擴充至spark,spark包下的所有包、類、對象都可以通路Navigator
  4.       protected[navigation] def useStarChart() {} //被protected修飾,可以被Navigator以及它的子類(類似于java),以及navigation下的所有内容通路
  5.       class LegOfJourney {
  6.         private[Navigator] val distance =100
  7.       }
  8.       private[this] var speed = 200 //隻有本對象能通路,該類其它執行個體不能通路,類似于java中的private變量,而且沒有getter方法
  9.     }
  10.   }
  11.   package launch{
  12.     import navigation._ //因為launch與navigation平級,是以必須import
  13.     object Vehicle {
  14.       private[launch] val guide = new Navigator //因為launch是spark的子包。是以可以通路
  15.     }
  16.   }
  17. }

伴生類、伴生對象的通路權限:

點選(此處)折疊或打開

  1. class PackageOps_Advanced{
  2.   import PackageOps_Advanced.power
  3.   private def canMakeItTrue = power >10001 //伴生類可以通路伴生對象裡面的所有内容
  4. }
  5. object PackageOps_Advanced{
  6.   private def power = 10000
  7.   def makeItTrue(p : PackageOps_Advanced): Boolean = { //伴生對象可以通路伴生類的所有内容
  8.      val result = p.canMakeItTrue
  9.      result
  10.   }
  11. }

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28912557/viewspace-1845817/,如需轉載,請注明出處,否則将追究法律責任。

轉載于:http://blog.itpub.net/28912557/viewspace-1845817/