在scala里,对保护成员的访问比Java严格。Scala中,保护成员只在定义了成员的类的子类中可以访问,而Java中,还允许在同一个包的其他类中访问。
package p1 { class FClass{ protected def fun(){ println("myfunction") } } class SClass extends FClass{ fun()//允许访问 } class OtherC{ fun()//错误 不允许访问 } }
保护的作用域
Scala里的访问修饰符可以通过限定词强调 private[x] 或 protected[x] 表示知道x的私有或保护。 x指代包、类、单例对象
例:
import bob.nav._ object Test12{ def main(args:Array[String]):Unit={ var c1 = new CCCC;//访问无效 超出了bob包 } }
package bob{ package nav{ protected[bob] class CCCC{ //这个类对包含在bob包内的所有类和对象可见,在bob包之外的代码无法访问 protected[nav] def cfun(){println("CCC1")} //这个方法对navigate包内的类和对象可见 protected[this] val myspeed = 200; class MyC{ private[nav] def myfun(){println("MyC")} } val c1 = new CCCC c1.myspeed //错误 } } }