Scala 访问修饰符
本章介绍了Scala的访问修饰符。包、类或对象的成员可以使用访问修饰符private和protected进行标记,如果我们没有使用这两个关键字中的任何一个,则默认访问权限为public。这些修饰符将对成员的访问限制在代码的特定区域内。要使用访问修饰符,您需要在包、类或对象的成员定义中包含其关键字,下面的部分将对此进行详细说明。
私有成员
私有成员仅对包含该成员定义的类或对象内部可见。
以下是一个示例代码片段,用于解释私有成员:
示例
在Scala中,访问(new Inner).f()是非法的,因为在Inner中f被声明为私有,并且访问不是来自Inner类内部。相比之下,在Innermost类中的第一个访问f是可以的,因为该访问包含在Inner类的体内。Java会允许这两种访问,因为它允许外部类访问其内部类的私有成员。
受保护成员
受保护成员只能从定义该成员的类的子类访问。
以下是用于解释受保护成员的示例代码片段:
示例
在class Sub中,对f的访问是允许的,因为f在’Super’类中被声明为protected,并且’Sub’类是’Super’类的子类。相比之下,在’Other’类中对f的访问是不允许的,因为’Other’类没有继承自’Super’类。在Java中,后一种访问仍然被允许,因为’Other’类与’Sub’类在同一个包中。
公共成员
与私有成员和受保护的成员不同,对于公共成员不需要指定public关键字。对公共成员没有明确的修饰符。这些成员可以从任何地方访问。
以下是用于解释公共成员的示例代码片段:
示例
保护范围
在Scala中,访问修饰符可以与限定符一起使用。形式为private[X]或protected[X]的修饰符表示访问是私有的或受保护的,”直到”X,其中X表示某个封闭的包、类或单例对象。
考虑以下示例−
示例
注意 − 以下是从上面的示例中的要点 −
-
变量workDetails将可以被封装包professional中的任何类访问。
-
变量friends将可以被封装包society中的任何类访问。
-
变量secrets只能在实例方法(this)中对隐式对象访问。