📜  Scala访问修饰符

📅  最后修改于: 2021-01-09 11:53:05             🧑  作者: Mango

Scala访问修饰符

访问修饰符用于定义数据和我们的代码对外界的可访问性。您可以可访问地应用于类,特征,数据成员,成员方法和构造函数等。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示例:专用访问修饰符

在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