2014-11-22 95 views
0

叫我沒有什麼我做錯了不太清楚,我有一個名爲Player和Scala的子類字符一個Java父類。當我調用Character類時,父構造函數被調用,但子構造函數不是。我覺得我在這裏錯過了一些基本的東西。斯卡拉子類的構造函數沒有被從Java父類

這裏是Java類(父):

public class Player implements java.io.Serializable { 
    public Player(EntityClientPlayerMP player){ 
     //... 
    } 
} 

這裏是斯卡拉類(子):

class Character(clientPlayer:EntityClientPlayerMP) extends Player(clientPlayer) with Serializable { 

    def Character(client:EntityClientPlayerMP) = { 
    //... 
    } 

    def Character(name:String, playerUID:String) = { 
    //... 
    } 

    def Character(name:String) = { 
    //... 
    } 

    def Character() = { 
    //... 
    } 
} 

回答

1

構造Scala中不同的工作比Java。特別是,它們是一個具有相同的名稱作爲類def。有各種各樣的地方你可以read about it

在任何情況下,如果你真的需要替代的構造,它們看起來像這樣:

class C(name: String) { 
    def this(i: Int) = this(i.toString) 
} 

(其原因是忘記在交替構造正確初始化的事情是錯誤和額外的樣板的顯著來源。 。通過迫使一切去通過一個單一的主構造,語法比較簡單,當你只需要一個構造函數,初始化錯誤的可能性較小)

+0

感謝您的鏈接,這是有道理的:「當我在類的身體前面提到的是主要的構造者「 – 2014-11-22 19:37:50

相關問題