Scala访问修饰符和Java基本同样,分别有private、protected、public。默认缺省状况下,Scala对象的访问级别是public。
私有成员:用private关键字修饰的成员仅在包含了成员定义的类内部或对象内部可见。Java中容许这两种访问,它容许外部类访问内部类的私有成员。
1 class test{}class Outer{ 2 class Inner{ 3 private def p(){ 4 println( "p") 5 } 6 class InnerMost{ 7 p() //正确 8 } 9 } 10 //(new Inner).f("Outer") //错误,外层类不能访问被嵌套类的私有成员,Java中支持 11 }
保护成员:Scala比Java中更严格。只容许保护成员在定义了该成员的类的子类中被访问。Java中除定义了该保护成员的类的子类中可被访问,同一个包下的其余类也能够进行访问。
1 package p{ 2 class Supper{ 3 protected def p(){ 4 println("p") 5 } 6 } 7 8 class Sub extends Supper{ 9 p() //正确 10 } 11 12 class other{ 13 // (new Supper).p() //错误,只有子类能够。java支持,protected成员在同包下类中也可访问 14 } 15 }
公共成员:默认public,这样的成员在任何地方均可以被访问。
1 class test{}class Outer{ 2 class Inner{ 3 def p(){ 4 println( "p") 5 } 6 class InnerMost{ 7 p() //正确 8 } 9 } 10 //(new Inner).f("Outer") //正确 11 }
做用域保护java
Scala中访问修饰符能够经过使用限定词强调。格式private[x] 或 protected[x]this
X指某个所属的包、类、单例对象。private[x],读做“这个成员除了对[…]中的类或[…]中的包中的类及它们的伴生对象可见外,对其余全部类都是privatespa
Private[this] val x,只能被this访问,即只能被当前对象访问code
Private val x,能够被另外一个对象访问orm
Java的访问权限表对象
不写(default)默认:包内可访问blog
Private私有:类内可访问ci
Protected保护:包内和子类可访问作用域
Public公有:均可访问ast