我遇到了Scala处理超类构造函数时出现的奇怪行为。Scala:调用超类的构造函数
我有以下方式
package server
class Content(identifier:String,content:String){
def getIdentifier() : String = {identifier}
def getContent() : String = {content}
}
和一个简单的子类
package server
class SubContent(identifier:String, content:String) extends Content(identifier, content+"XXX")){
override def getContent():String = {
println(content)
super.getContent
}
}
定义一个非常简单的类,什么是真正奇怪的是,在子类有超类的重复属性,因此如果我创建一个新对象
var c = new SubContent("x","x")
执行
c.getContent
第一打印出“X”(该值提供给子类的构造),但返回“XXXX”(该提供给超类构造值)。
有什么办法可以避免这种行为?基本上我想要的是子类不会创建自己的属性,而只是将参数传递给超类。
这不是一个案例类,但问题仍然存在 - 特别是因为内容被用在子类的主体中。 – 2010-09-03 18:08:22
是否有其他方法来定义它以避免这种情况?或者至少,如果我从不参考子类构造函数的参数,它们的字段将被分配(浪费内存)? – mariosangiorgio 2010-09-03 18:18:56
在'SubContent.getContent'中使用'super.content'而不是'content'。 – 2010-09-04 11:10:52