本文概述
访问修饰符用于定义数据和我们的代码对外界的可访问性。你可以可访问地应用于类, 特征, 数据成员, 成员方法和构造函数等。Scala提供了对所有人的最小访问权限。你可以根据应用程序要求将任何访问修饰符应用于代码。
Scala仅提供三种类型的访问修饰符, 如下所示:
- 没有编辑
- protected
- private
在scala中, 如果你未提及任何访问修饰符, 则将其视为没有修饰符。
下表包含有关访问修饰符的可访问性的信息。
Modifier | 外包装 | Package | Class | Subclass | Companion |
---|---|---|---|---|---|
无访问修饰符 | Yes | Yes | Yes | Yes | Yes |
Protected | No | No | Yes | Yes | Yes |
Private | No | No | Yes | No | Yes |
Scala示例:专用访问修饰符
在scala中, 专用访问修饰符用于使数据仅在声明了它的类中可访问。它受到最大限制, 并使你的数据保持在有限范围内。私有数据成员不会继承到子类中。
class AccessExample{
private var a:Int = 10
def show(){
println(a)
}
}
object MainObject{
def main(args:Array[String]){
var p = new AccessExample()
p.a = 12
p.show()
}
}
输出
error: variable a in class AccessExample cannot be accessed in AccessExample
p.a = 12
^
one error found
Scala示例:受保护的访问修饰符
受保护的访问修饰符仅在类, 子类和伴随对象内可访问。声明为保护的数据成员在子类中继承。让我们来看一个例子。
class AccessExample{
protected var a:Int = 10
}
class SubClass extends AccessExample{
def display(){
println("a = "+a)
}
}
object MainObject{
def main(args:Array[String]){
var s = new SubClass()
s.display()
}
}
输出
a = 10
Scala示例:无访问修饰符
在scala中, 当你不提及任何访问修饰符时, 它将被视为no-access-modifier。与java中的public相同。它的限制最少, 可以从包装内或包装外的任何地方轻松访问。
class AccessExample{
var a:Int = 10
def show(){
println(" a = "+a)
}
}
object MainObject{
def main(args:Array[String]){
var a = new AccessExample()
a.show()
}
}
输出
a = 10