开发手册 欢迎您!
软件开发者资料库

Scala - 访问修饰符

Scala访问修饰符 - 从简单和简单的步骤学习Scala,从基本到高级概念,包括Scala语法面向对象语言,特征,方法,模式匹配,元组,注释,指示符,概述,环境设置,基本语法,数据类型,变量,类和对象,访问修饰符,运算符,IF ELSE,循环语句,函数,闭包,字符串,数组,集合,正则表达式,异常处理,提取器,文件I / O.

本章将指导您完成Scala访问修饰符.包,类或对象的成员可以使用访问修饰符私有和受保护标记,如果我们不使用这两个关键字中的任何一个,则访问将被假定为公共访问.这些修饰符限制对成员到某些代码区域的访问.要使用访问修饰符,请在包,类或对象的成员定义中包含其关键字,我们将在下一节中看到.

私有成员

私有成员仅在包含成员定义的类或对象内可见.

以下是解释私有成员 : 去的示例代码段;

示例

class Outer {   class Inner {      private def f() { println("f") }            class InnerMost {         f() // OK      }   }   (new Inner).f() // Error: f is not accessible}

在Scala中,访问权限(新的内部). f()是非法的,因为f在Inner中声明为private,而访问不在Inner类内.相比之下,在Innermost类中第一次访问f是可以的,因为该访问包含在Inner类的主体中. Java允许两种访问,因为它允许外部类访问其内部类的私有成员.

受保护的成员

受保护的成员只能从定义成员的类的子类.

以下是解释受保护成员的示例代码片段 :

示例

package p {   class Super {      protected def f() { println("f") }   }      class Sub extends Super {      f()   }      class Other {      (new Super).f() // Error: f is not accessible   }}

在Sub类中访问f是正常的,因为f在'Super'中被声明为受保护class和'Sub'类是Super的子类.相比之下,不允许在"其他"类中访问f,因为"其他"类不会继承"超级"类.在Java中,后者仍然允许访问,因为'Other'类与'Sub'类在同一个包中.

公共成员

与私有成员和受保护成员不同,不需要为Public成员指定Public关键字.公共成员没有明确的修饰符.这些成员可以从任何地方访问.

以下是解释公共成员的示例代码片段 :

示例

class Outer {   class Inner {      def f() { println("f") }            class InnerMost {         f() // OK      }   }   (new Inner).f() // OK because now f() is public}

保护范围

Scala中的访问修饰符可以使用限定符进行扩充.私有[X]或受保护[X]形式的修饰符意味着访问是私有的或受到"最多"X的保护,其中X表示一些封闭的包,类或单个对象.

考虑以下示例 :

示例

package society {   package professional {      class Executive {         private[professional] var workDetails = null         private[society] var friends = null         private[this] var secrets = null         def help(another : Executive) {            println(another.workDetails)            println(another.secrets) //ERROR         }      }   }}

注意 : 以上示例中的以下几点 :

  • 封闭包专业人员中的任何类都可以访问变量workDetails./p>

  • 封闭包协会中的任何类都可以访问可变的朋友.

  • 变量秘密只能在实例方法(this)中的隐式对象上访问.