2014-11-22 84 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

相关问题