Нет, нет более «разумного» подхода. Если ваш базовый класс не имеет конструктора по умолчанию, вы должны явно вызвать правильный конструктор из всех дочерних классов.
Обратите внимание: это не означает, что для классов детей необходимо иметь точный тот же конструктор, что и базовый класс. Например, это совершенно верно:
class Foo {
protected int a;
protected int b;
protected Foo(final int a, final int b) {
this.a = a;
this.b = b;
}
}
class Bar extends Foo {
protected Bar() {
super(0,0);
}
}