内容:
1 包、類、對象、成員通路權限實戰
2 伴生類、伴生對象通路權限實戰
/**
* Scala中包、類、對象、成員、伴生類、伴生對象通路權限
*/
package spark {
package navigation {
//class前的private 用于限定該類的通路權限,表示Navigator的通路權限可以擴充到spark包下,對包含在spark包内的所有類和對象可見。
private[spark] class Navigator{
//useStarChart前的protected,表示useStarChart不僅對nabigation的包内所有代碼可以通路,而且Navigator的類和對象可見,對Navigator的子類也可見。
protected[navigation] def useStarChart(){}
class LegOfJourney {
private[Navigator] val distance =
}
private[this] var speed =
//private[this]隻能目前執行個體通路自己,即使外部有同屬一個類的不同對象也不能通路。
}
}
package launch{
import navigation._
object Vehice {
//launch包在spark包内,是以直接通路Navigator
private[launch] val guide = new Navigator
}
}
}
//伴生類可以随便通路伴生對象,伴生對象可以随便通路伴生類。伴生類如果有protected則子類可以通路,但伴生對象如果有protected,而伴生對象沒有子類或子對象去通路。
class PackageOps_Advanced{
import PackageOps_Advanced.power
private def canMakeItTrue = power >
}
object PackageOps_Advanced {
private def power =
def makeItTrue(p: PackageOps_Advanced): Boolean = {
val result = p.canMakeItTrue
result
}
}