|
1
6
无论你把它放在(抽象)类还是特征上,sealed的含义都没有区别。所以在你的例子中,这两个例子确实(几乎)是等价的。 当一个子类想要从另一个类继承时,抽象类和特征之间的区别就很明显了:一个类/特征总是只能扩展一个类,但可以扩展多个特征。例如:
否则,抽象类和特征几乎是等价的。实践中最大的差异可能只出现在您关心二进制兼容性的时候(这个答案有点超出范围)。 |
|
|
2
3
添加到 gzm0's answer ,抽象密封类和trait之间的另一个区别是抽象密封类与任何其他类一样,但与trait不同,可以具有构造函数参数:
|