Scala_修饰符

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 }

作用域保护

Scala中访问修饰符可以通过使用限定词强调。格式private[x] protected[x]

X指某个所属的包、类、单例对象。private[x],读作“这个成员除了对[]中的类或[]中的包中的类及它们的伴生对象可见外,对其他所有类都是private

 

Private[this] val x,只能被this访问,即只能被当前对象访问

Private val x,可以被另一个对象访问

Java的访问权限表

不写(default)默认:包内可访问

Private私有:类内可访问

Protected保护:包内和子类可访问

Public公有:都可访问

 

作用域保护

Scala中访问修饰符可以通过使用限定词强调。格式private[x] protected[x]

X指某个所属的包、类、单例对象。private[x],读作“这个成员除了对[]中的类或[]中的包中的类及它们的伴生对象可见外,对其他所有类都是private

 

Private[this] val x,只能被this访问,即只能被当前对象访问

Private val x,可以被另一个对象访问

猜你喜欢

转载自www.cnblogs.com/9981-lyq/p/10434566.html