2011-03-21 52 views
4

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

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 = [email protected] 

scala> obj.str 
res0: String = one 

我工作了很多与案件类别,其中ClassName(args)实际上创建一个对象,对我来说,它看起来像我在扩展一个对象,但我不确定在这里。

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

+0

不要扩展大小写类。基于Scala如何优化模式匹配,在案例类继承方面存在一些bug。 – 2011-03-21 17:33:03

+0

但这正是他们在[斯卡拉之旅:案例分类](http://www.scala-lang.org/node/107)中所做的事情? – aioobe 2011-03-21 19:09:32

+0

个案类有一个超类或特征是好的。你应该避免的是将一个案例类作为一个超类。即'Foo类扩展SomeCaseClass' – 2011-03-22 13:01:01

回答

10

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

是的,这正是它的意思。

+0

谢谢! aioobe 2011-03-21 16:04:23