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

У меня есть несколько конструктор в классе 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.

Что допустимый путь состоит в том, чтобы сделать это?

19
задан Phương Nguyễn 26 July 2010 в 16:25
поделиться

2 ответа

Вы должны добавить аргументы конструктора к определению класса следующим образом:

class B extends A("abc")
27
ответ дан 30 November 2019 в 02:22
поделиться

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

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

Но вы должны ссылаться на , это , super невозможно.

29
ответ дан 30 November 2019 в 02:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: