我在经历Scala处理超类构造函数的奇怪行为。
我定义了一个非常简单的类,如下所示:
一个简单的子类
真正奇怪的是,在子类中存在超类属性的重复,因此如果我创建一个新对象。
首先打印出“x”(提供给子类构造函数的值),但返回“xXXX”(提供给超类构造函数的值)。
有没有办法避免这种行为?基本上我想要的是子类不创建自己的属性,而是将参数传递给超类。
我定义了一个非常简单的类,如下所示:
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")
the execution of
c.getContent
首先打印出“x”(提供给子类构造函数的值),但返回“xXXX”(提供给超类构造函数的值)。
有没有办法避免这种行为?基本上我想要的是子类不创建自己的属性,而是将参数传递给超类。
SubContent.getContent
中,请使用super.content
而不是仅使用content
。 - Alexey Romanov