我正在通过学​​习“Scala for the Im耐心”一书中的练习来学习Scala。一项练习要求:



有人可以帮我理解吗? 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]的子类访问(并带有阴影)。

    第二个使构造函数受到保护,这意味着只能由Stack的子类创建新的Stack[+A]实例。

    同样,等效的Java代码类似于
    class Stack<A> {
        protected List<A> elems;
        protected Stack<A>(List<A> elems){this.elems = elems;}
    }
    

    关于scala - protected 关键字在Scala的类定义中意味着什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30020306/

    10-10 04:43