gpt4 book ai didi

Scala 保护对象

转载 作者:行者123 更新时间:2023-12-04 06:27:34 25 4
gpt4 key购买 nike

在 Scala 中,如果我创建一个对象和伴随类,则使用 protected 声明的标识符如果导入了对象,则可以从类访问修饰符:

object Foo {
protected val X = 42
}
class Foo {
import Foo._
def getX(): Int = X
}

然而, protected不能从类 Foo 的子类访问标识符:
class Bar extends Foo {
import Foo._
def getX(): Int = X * 2
}

我在 Bar 中遇到编译时错误.

其他然后(暗示) public , 是否可以在 X 上放置任何访问修饰符以便它可以从其同伴的子类访问,但不能从其他类访问,包括同一包中的其他类?

最佳答案

那是因为只有类(class) Foo是对象的伴侣 Foo .

在这里,private之间的区别和 protected无意义,因为对象Foo是单例,这意味着没有任何其他对象与对象 Foo 具有相同的类( Foo.type )。

Scala 中的访问限制是基于包的,所以简短的回答是否定的。但是,您可以在基类上创建转发器,除非您需要它在没有实例的情况下可用。

然而,在你的位置上,我会回到设计板。

关于Scala 保护对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4258967/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com