Scala 中的访问修饰符
scala中的访问修饰符用于定义scala中包、类或对象的成员的访问字段。要使用访问修饰符,必须在包、类或对象的成员定义中包含其关键字。这些修饰符将限制访问到特定代码区域的成员。
Scala 提供了三种类型的访问修饰符:
- 私人的
- 受保护
- 上市
桌子:
Modifier | Class | Companion | Subclass | Package | World |
---|---|---|---|---|---|
No Modifier/Public | Yes | Yes | Yes | Yes | Yes |
Protected | Yes | Yes | Yes | No * | No |
Private | Yes | Yes | No | No * | 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