您的位置:首页 > 其它

Scala语言的访问修饰符

2017-10-13 16:34 232 查看
一、访问修饰符。

scala的访问修饰符与java当中的相同,但是也有其独特的规定和应用。



在java中省缺值是default(Package),作用域的访问如上图所示,简单说就是public能被同项目(World语言环境)的所有文件访问。protected:同类,同包,子类(可以在不同包下)……

在Scala里面就出现下面这几种类型:这里的省缺修饰符default,就是public。

一下是编写的环境:

Class:类

Companion:(伴生对象(相当于一个java里面的静态类),必须与所要陪伴的类放在同一个文件中)

Subclass:子类

Package:包“

World:同一文件

二、为访问修饰符配置作用域

Scala 的访问修饰符可以添加作用域参数。作用域的语法如下:

private[x]或protected[x]

其中x代表某个包,类或者单例对象,表示可以访问这个private或 protected的范围直到X。

通过为访问修饰符添加作用域参数,可以非常精确的控制所定义的类型能够被其它类型访问的范围。尤其是可以支持Java语言支持的 package private,package protected 等效果。

package bobsrockets
{
package navigation
{
//如果为private class Navigator,则类Navigator只会对当前包navigation中所有类型可见。
//即private默认省略了[X],X为当前包或者当前类或者当前单例对象。
//private[bobsrockets]则表示将类Navigator从当前包扩展到对bobsrockets包中的所有类型可见。
private[bobsrockets] class Navigator
{
protected[navigation] def useStarChart() {}
class LegOfJourney
{
private[Navigator] val distance = 100
}

private[this] var speed = 200
}
}
package launch
{
import navigation._
object Vehicle
{
//private val guide:表示guide默认被当前单例对象可见。
//private[launch] val guide:表示guide由默认对当前单例对象可见扩展到对launch包中的所有类型可见。
private[launch] val guide = new Navigator
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  scala