📜  Scala 中的访问修饰符

📅  最后修改于: 2022-05-13 01:55:13.244000             🧑  作者: Mango

Scala 中的访问修饰符

scala中的访问修饰符用于定义scala中包、类或对象的成员的访问字段。要使用访问修饰符,必须在包、类或对象的成员定义中包含其关键字。这些修饰符将限制访问到特定代码区域的成员。
Scala 提供了三种类型的访问修饰符:

  1. 私人的
  2. 受保护
  3. 上市

桌子:

ModifierClassCompanionSubclassPackageWorld
No Modifier/PublicYesYesYesYesYes
ProtectedYesYesYesNo *No
PrivateYesYesNoNo *No


上表中的同伴是什么?
它是一个与类同名的单例对象。

1.私有:当一个成员被声明为私有时,我们只能在定义类内部或通过它的一个对象使用它。

例子:

// Scala program of private access modifier
class abc
{ 
    private var a:Int = 123
    def display()
    {
        a = 8
        println(a)
    }
}
  
object access extends App
{
    // class abc is accessible 
    // because this is in the same enclosing scope
    var e = new abc()
    e.display()
}

输出:

8

在这里,我们声明了一个私有变量“a”,现在它只能在它的定义类中或通过类对象访问。

2. 受保护的:它们只能从定义了成员的基类的子类中访问。

例子:

// Scala program of protected access modifier
  
class gfg
{ 
    // declaration of protected member
    protected var a:Int = 123
    def display()
    {
        a = 8
        println(a)
    }
}
  
// class new1 extends by class gfg
class new1 extends gfg
{
    def display1()
    {
        a = 9
        println(a)
    }
}
  
object access extends App
{
    // class abc is accessible because this
    // is in the same enclosing scope
    var e = new gfg()
    e.display()
    var e1 = new new1()
     e1.display1()
          
}

输出:

8
9

当我们在类 new1 中扩展 abc 时,现在可以修改受保护的变量 a,因为 new1 是类 abc 的子类。

3. public: Scala中没有public关键字。默认访问级别(未指定修饰符时)对应于 Java 的公共访问级别。我们可以在任何地方访问这些。

// Scala program of protected access modifier
  
class gfg
{
    var a:Int = 123
}
object access extends App
{
    var e = new gfg()
    e.a = 444    
    println(e.a)
}

输出:

444