Конструктор всегда вызывает супер-конструктор, всегда . Если явный вызов супер-конструктора не сделан, то компилятор пытается установить его так, чтобы он вызывал конструктор по умолчанию без параметров. Если конструктор по умолчанию без параметров не существует, отображается ошибка компиляции, и компиляция завершится неудачей.
Решение в вашем случае заключается в явном вызове соответствующего супер-конструктора в качестве первой строки конструктора вашего Box, и это также имеет смысл, если вы думаете об этом, так как вы хотите инициализировать супер с a, b и c, как написано в конструкторе:
class BoxSub extends BoxSuper
{
int weight;
BoxSub(int a,int b,int c,int d)
{
super(a, b, c);
// height=a;
// length=b;
// width=c;
weight=d;
}
}