类和父/调用超级构造函数中的不同字段实例,方法为

时间:2015-10-07 18:28:27

标签: scala

我试图使用方法从类中调用超级构造函数。整个设置如下:

class Straight(hand: Hand) extends Combination(Straight.makeHandAceLowIfNeeded(hand), 5)

object Straight {
  private def makeHandAceLowIfNeeded(hand: Hand): Hand = {
    ...
  }
}

虽然这会编译,但它有一些相当奇怪的运行时行为。在调试时,我注意到Straight实例定义了两次“hand”属性。有人可以告诉我发生了什么,以及用不同的参数调用超级构造函数的正确方法是什么? 在我的用例中,我想用一个修改过的手调用超级构造函数,其中我将一张卡替换为原始构造函数参数。

带有重复字段的调试程序屏幕截图: [1]

1 个答案:

答案 0 :(得分:0)

这是调用超类构造函数的一种非常好的方法。这是两个私有字段,它们不会冲突,但您可以重命名其中一个以避免在调试期间出现混淆(或者如果您想从子类访问超类的值)。但是,如果类参数在构造函数外部使用,则只应为类参数生成该字段,在您的情况下,它似乎不是。您是否简化了Straight的定义?