📅  最后修改于: 2021-01-09 11:53:05             🧑  作者: Mango
访问修饰符用于定义数据和我们的代码对外界的可访问性。您可以可访问地应用于类,特征,数据成员,成员方法和构造函数等。Scala提供了对所有人的最小访问权限。您可以根据应用程序要求将任何访问修饰符应用于代码。
Scala仅提供三种类型的访问修饰符,如下所示:
在scala中,如果您未提及任何访问修饰符,则将其视为没有修饰符。
下表包含有关访问修饰符的可访问性的信息。
Modifier | Outside package | Package | Class | Subclass | Companion |
---|---|---|---|---|---|
No access modifier | Yes | Yes | Yes | Yes | Yes |
Protected | No | No | Yes | Yes | Yes |
Private | No | No | Yes | No | Yes |
在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
受保护的访问修饰符仅可在类,子类和伴随对象内访问。声明为保护的数据成员在子类中继承。让我们来看一个例子。
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中,当您不提及任何访问修饰符时,它将被视为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