2010-07-26 4 views
17

У меня есть несколько конструкторов в классе Java.Наследование Scala от класса Java: выберите, какой супер конструктор вызвать

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

Теперь я хочу, чтобы создать класс Scala, который наследует от этого класса

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

Но этот синтаксис является недопустимым. Scala Жалуется на то, что '.' expected but '(' found.

Что действительный способ сделать это?

ответ

24

Вы должны добавить аргументы конструктора для определения класса, как это:

class B extends A("abc") 
24

Как говорит Moritz, вы должны предоставить конструктор арг непосредственно в определении класса. Кроме того, вы можете использовать вторичные Конструкторы таким образом:

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) 
} 

Но вы должны см this, super не представляется возможным.