У меня есть базовый класс с двумя конструкторами и дочерний класс, который имеет один конструктор. Можно ли создать экземпляр дочернего класса, используя конструктор второго базового класса?
Пример кода:
abstract class RuleCondition(rule:Rule, field:String, equal:Boolean, inverted:Boolean)
{
// alternate constructor with RuleValue instead of static comparation value
def this(rule:Rule, field:String, ref:RuleValue, equal:Boolean = false, inverted:Boolean = false) = ???
}
class RuleConditionAbove(rule:Rule, field:String, comparationValue:Long, equal:Boolean = false, inverted:Boolean = false)
extends RuleCondition(rule, field, equal, inverted)
{
// ...
}
Теперь я могу сделать это:
val myAboveCondition = new RuleConditionAbove(rule, "bla", 10, true, false)
но я не могу этого сделать:
val myAboveCondition = new RuleConditionAbove(rule, "bla", RuleValue(...), true, false)
потому что альтернативный конструктор базового класса RuleCondition
не виден. будет видимым, как только я добавлю это в дочерний класс:
def this(rule:Rule, field:String, ref:RuleValue, equal:Boolean = false, inverted:Boolean = false) = this(rule, field, ref, equal, inverted)
Будет ли это единственным / обычным способом решения этой проблемы, или есть что-то более умное, которое включает в себя меньше кода и прошлого кода? (так как у меня есть тонна дочерних классов того же образца)
[править] Для пояснения, второй конструктор будет одинаковым в каждом дочернем классе, поэтому я бы хотел, чтобы он реализовывался только один раз в базовом классе.
Тем не менее, необходимость помещать другой конструктор в каждый дочерний класс как-то побеждает эту цель, и поэтому у меня не будет двух конструкторов в базовом классе, а только во всех дочерних классах.