![]() |
1
6
无论你把它放在(抽象)类还是特征上,sealed的含义都没有区别。所以在你的例子中,这两个例子确实(几乎)是等价的。 当一个子类想要从另一个类继承时,抽象类和特征之间的区别就很明显了:一个类/特征总是只能扩展一个类,但可以扩展多个特征。例如:
否则,抽象类和特征几乎是等价的。实践中最大的差异可能只出现在您关心二进制兼容性的时候(这个答案有点超出范围)。 |
![]() |
2
3
添加到 gzm0's answer ,抽象密封类和trait之间的另一个区别是抽象密封类与任何其他类一样,但与trait不同,可以具有构造函数参数:
|
![]() |
davidzxc574 · 将字符串缩放为字符 2 年前 |
![]() |
yic_l · 什么是“!”在这个函数中是什么意思? 2 年前 |
![]() |
Jelly · Scala:用于理解递归未来 2 年前 |
![]() |
bbgghh · 在scala中连接两个列表时如何处理不匹配的键 2 年前 |
![]() |
Iheb Mar · 卡夫卡制作人/消费者粉碎每一秒的API调用 3 年前 |
![]() |
B. Bal · 在Scala中重用类成员 3 年前 |