Scala 用参数扩展类

Scala 用参数扩展类,scala,inheritance,Scala,Inheritance,我注意到我可以扩展一个类,同时将参数传递给扩展类: scala> class SomeClass(val str: String) defined class SomeClass scala> class SubclassOne extends SomeClass("one") defined class SubclassOne scala> class SubclassTwo extends SomeClass("two") defined class SubclassT

我注意到我可以扩展一个类,同时将参数传递给扩展类:

scala> class SomeClass(val str: String)
defined class SomeClass

scala> class SubclassOne extends SomeClass("one")
defined class SubclassOne

scala> class SubclassTwo extends SomeClass("two")
defined class SubclassTwo

scala> val obj : SomeClass = new SubclassOne
obj: SomeClass = SubclassOne@2dca4eb4

scala> obj.str
res0: String = one
我经常使用case类,其中
ClassName(args)
实际上创建了一个对象,所以对我来说,它看起来像是在扩展一个对象,但我不确定

这是否意味着我在扩展类,并自动将参数传递给超级构造函数

这是否意味着我在扩展类,并自动将参数传递给超级构造函数


是的,这正是它的意思。

不要扩展case类。case类继承中存在某种缺陷,这是基于Scala如何优化它们以进行模式匹配。但这正是它们在中所做的?case类有一个超类或特征是可以的。您应该避免将case类作为超级类。也就是说,
class Foo扩展了一些case类
Aha,好吧,我明白了。好吧,无论如何,在这种情况下我不会这么做:)