当scala不支持多重继承时,什么都不能成为所有类型的子类
这更多的是我偶然发现的概念性问题。Scala状态比多重继承不受支持,但同时状态比“Nothing”是所有类型的子类。这不是与Scala陈述的概念相反吗 不支持Scala状态超过多重继承 事实并非如此。Scala支持线性化的多重混合继承 但同时状态比“Nothing”是所有类型的子类 事实并非如此。明确指出,当scala不支持多重继承时,什么都不能成为所有类型的子类,scala,Scala,这更多的是我偶然发现的概念性问题。Scala状态比多重继承不受支持,但同时状态比“Nothing”是所有类型的子类。这不是与Scala陈述的概念相反吗 不支持Scala状态超过多重继承 事实并非如此。Scala支持线性化的多重混合继承 但同时状态比“Nothing”是所有类型的子类 事实并非如此。明确指出,没有扩展任何,仅此而已。它只是Any的一个子类,其他什么都不是 文件还说明(粗体强调): Nothing是所有其他类型的子类型(包括scala.Null) 正如您所看到的,文档中没有提到Not
没有扩展任何
,仅此而已。它只是Any
的一个子类,其他什么都不是
文件还说明(粗体强调):
Nothing
是所有其他类型的子类型(包括scala.Null
)
正如您所看到的,文档中没有提到Nothing
是所有类型的子类。它只是说它是所有类型中的一种亚类型,这是完全不同的
这不是与Scala陈述的概念相反吗
不,不是
但即使你说的是真的,也没有矛盾:Scala语言规范定义了什么是“Scala”,如果SLS说Nothing
是所有类的子类,那么它就是这样的。Scala语言规范可以说任何它想说的话,这永远不会违背Scala的概念,因为Scala语言规范定义了Scala的概念
现在,事实证明,您的前提是错误的,Scala语言规范并没有说Nothing
有多个超类,但它可以说如果需要的话,这不会违背Scala的概念,因为Scala语言规范说明了Scala的概念到底是什么
不支持Scala状态超过多重继承
事实并非如此。Scala支持线性化的多重混合继承
但同时状态比“Nothing”是所有类型的子类
事实并非如此。明确指出,没有扩展任何
,仅此而已。它只是Any
的一个子类,其他什么都不是
文件还说明(粗体强调):
Nothing
是所有其他类型的子类型(包括scala.Null
)
正如您所看到的,文档中没有提到Nothing
是所有类型的子类。它只是说它是所有类型中的一种亚类型,这是完全不同的
这不是与Scala陈述的概念相反吗
不,不是
但即使你说的是真的,也没有矛盾:Scala语言规范定义了什么是“Scala”,如果SLS说Nothing
是所有类的子类,那么它就是这样的。Scala语言规范可以说任何它想说的话,这永远不会违背Scala的概念,因为Scala语言规范定义了Scala的概念
现在,事实证明,您的前提是错误的,Scala语言规范没有说
Nothing
有多个超类,但它可以说,如果需要,这不会违背Scala的概念,因为Scala语言规范说明了什么,确切地说,Scala的概念是。Nothing
不是所有类型的子类,它是所有类型的子类型。@Michael Zajac,但不是子类是一种子类型。它们之间到底有什么区别。确切地说,子类化是一种子类型化。与子类化相反,它允许多重继承。谢谢你的帮助。子类化创建了一个子类型关系,但是你可以创建一个子类型关系而不需要子类型化。例如,Option[String]
是Option[Any]
的子类型,但不需要子类来定义它。Nothing
不是所有类型的子类,它是所有类型的子类型。@Michael Zajac,但不是子类化是一种子类型。它们之间到底有什么区别。确切地说,子类化是一种子类型化。与子类化相反,它允许多重继承。谢谢你的帮助。子类化创建了一个子类型关系,但是你可以创建一个子类型关系而不需要子类型化。例如,Option[String]
是Option[Any]
的一个子类型,但不需要子类来定义它。@Jörg W Mittag,谢谢你。我对类型和类感到困惑,但上面的解释澄清了这一切。@Jörg W Mittag,谢谢你,伙计。我对类型和类别感到困惑,但上面的解释澄清了这一切。