我正在通过“不耐烦的 Scala”一书中的练习来学习 Scala。一项练习要求:
The file Stack.scala contains the definition
class Stack[+A] protected (protected val elems: List[A])
Explain the meaning of the
protected
keywords.
有人可以帮助我理解这一点吗?
protected
显然对成员变量有意义,但它在类定义中有什么含义?
最佳答案
在 Scala 中,编写
class Stack[+A](elems: List[A])
还实现了一个默认构造函数。如果您了解 Java,那么在 Java 中这将类似于
class Stack<A> {
private List<A> elems;
public Stack<A>(List<A> elems){this.elems = elems;}
}
现在,您有两个
protected
您示例中的关键字:protected val elems: List[A]
protected (/*...*/)
第一个使变量
elems
protected ,意味着它只能被 Stack[+A]
的子类访问(和隐藏) .第二个使构造函数 protected ,这意味着一个新的
Stack
实例只能由 Stack[+A]
的子类创建.同样,等效的 Java 代码类似于
class Stack<A> {
protected List<A> elems;
protected Stack<A>(List<A> elems){this.elems = elems;}
}
关于scala - Scala 类定义中 protected 关键字的含义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30020306/