如果scala中不支持多继承,那么什么都不能成为所有类型的子类

jac*_*ack 1 scala

这更多是我偶然发现的概念性问题.Scala声明不支持多重继承但是同时状态比"Nothing"是所有类型的子类.这不符合Scala所说的概念.

Jör*_*tag 5

Scala状态比不支持多重继承

事实并非如此.Scala支持线性化的多重mixin继承.

但同时状态比"Nothing"是所有类型的子类.

事实并非如此.文件明确指出Nothing extends Any,就是这样.它只是一个子类Any,没有别的.

文件说明(大胆强调我的):

Nothing是每种其他类型的类型(包括scala.Null)

正如您所看到的,文档中没有任何地方说这Nothing是所有类型的子.它只是说,这是一个子的所有类型,这是完全不同的.

这不符合Scala所说的概念.

不它不是.

但是,即使如果你说的话真的,但仍然没有矛盾:Scala语言规范定义了什么是"斯卡拉"是,如果SLS说Nothing是所有类的子类,那么这是怎么回事.Scala语言规范说出了它想要的任何东西,这绝不会违反Scala的概念,因为Scala语言规范定义了Scala的概念.

现在,事实证明,你的前提是错误的,并且Scala语言规范并没有说它Nothing有多个超类,但它可以说如果它需要,那就不会违反Scala的概念,因为Scala语言规范确切地说,Scala的概念是什么.