2010-07-26 4 views
17

J'ai plusieurs constructeurs dans une classe Java.Héritage Scala de la classe Java: sélectionnez le super constructeur à appeler

public class A{ 
    public A(){...} 
    public A(String param){...} 
    public A(String param, Object value} 
} 

Maintenant, je veux créer une classe Scala qui héritent de cette classe

class B extends A{ 
    super("abc") 
} 

Mais cette syntaxe est invalide. Scala se plaint que '.' expected but '(' found.

Quelle est la manière valide de faire cela?

Répondre

24

Vous devez ajouter les arguments du constructeur à la définition de classe comme ceci:

class B extends A("abc") 
24

Comme Moritz dit, vous devez fournir le constructeur args directement dans la définition de la classe. En outre, vous pouvez utiliser les constructeurs secondaires de cette façon:

class B(a:String, b:String) extends A(a,b) { 
    def this(a:String) = this(a, "some default") 
    def this(num:Int) = this(num.toString) 
} 

Mais vous devez se référer à this, super est impossible.

Questions connexes