本文通过下面一个程序简单分析下包、类、对象访问权限的情况:
package spark {
package navigation {
private[spark] class Navigator {
protected[navigation] def useStartChar() = println("navigation")
class LegOfJourney {
private[Navigator] val distance = 100
}
private[this] var speed = 200
}
class Test{
new Navigator().useStartChar()
}
}
package launch {
object Vehicle {
private[launch] val guide = new navigation.Navigator
}
}
}
首先先分析下上面程序,spark包下有两个包navigation和launch,在包navigation里面定义了类Navigator,并将其访问权限升级为spark包下所有,意思是在spark包里面都可以访问该类,
如下面包launch里面就访问了类Navigator,private[launch] val guide = new navigation.Navigator。
在类Navigator中定义了方法useStartChar(),并将其的访问权限设置为navigation,这表明只能在包navigation里面访问该方法,如Test类中new Navigator().useStartChar()
private[this] var speed = 200,这个只能在类Navigator中访问,不能再该类其他类对象中访问。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。