簡體   English   中英

類和父/調用超級構造函數中具有方法的不同字段實例

[英]Different field instances in class and parent/Call super constructor with method

我正在嘗試使用方法從類中調用超級構造函數。 整個設置如下所示:

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

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

盡管確實可以編譯,但它具有一些相當奇怪的運行時行為。 調試時,我注意到Straight實例具有兩次定義的“ hand”屬性。 有人可以告訴我怎么回事,以及用不同的參數調用超級構造函數的正確方法是什么? 在我的用例中,我想用修改過的手來調用超級構造函數,與原始構造函數參數相比,在其中我替換了一張卡。

具有重復字段的調試器屏幕截圖: [1]

這是調用超類構造函數的一種很好的方法。 這是兩個私有字段,它們沒有沖突,盡管您可以重命名其中一個以避免在調試過程中(或者如果您想從子類訪問超類的值)引起混淆。 但是,只有在構造函數外部使用該字段時,才應為該類參數生成該字段,而在您的情況下似乎不是這樣。 您是否簡化了Straight的定義?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM