Scala集合类可以扩展自己吗? AbstractSeq混乱

时间:2016-07-02 15:01:33

标签: scala inheritance scala-collections

在Scala标准库中,我注意到了这一点:

package scala
package collection
package mutable

import generic._
...

/** Explicit instantiation of the `Seq` trait to reduce class file size in subclasses. */
abstract class AbstractSeq[A] extends scala.collection.AbstractSeq[A] with Seq[A]

AbstractSeq[A] extends AbstractSeq[A] with Seq[A]?

这里发生了什么?

2 个答案:

答案 0 :(得分:5)

它正在扩展scala.collection.AbstractSeq,而定义是scala.collection.mutable.AbstractSeq,所以这些是不同的类。 (请注意不同的包名称:scala.collectionscala.collection.mutable。)

答案 1 :(得分:3)

他们是不同的班级。您正在查看的是scala.collection.mutable.AbstractSeq,其扩展名为scala.collection.AbstractSeq

包是一种命名空间。只要它们位于不同的包中,不同的类可以具有相同的名称。