Не удается вызвать конструктор супертипа напрямую - почему бы и нет?

У меня есть следующие примеры классов в Java:

public class A { }

public class Super {
    protected Super() { }
    public Super(A a) { }
}

public class Sub extends Super { }

public class Consumer {
    public Consumer() {
        Sub sub = new Sub(new A()); //compiler error
    }
}

Ошибка компилятора указывает, что аргументы не могут быть применены к конструктору по умолчанию в Sub, что совершенно понятно.

Что мне любопытно, так это обоснование этого решения. Java создает пустой конструктор по умолчанию в Sub ; почему в этом случае он не может назвать это за кадром? Это в первую очередь случай разумного удержания за руку или это техническая причина?

РЕДАКТИРОВАТЬ

Я знаю , что это языковое ограничение. Мне любопытно , почему это языковое ограничение.

РЕДАКТИРОВАТЬ 2

Похоже, что, как это часто бывает, я был слишком близок к коду, над которым на самом деле работал, чтобы увидеть общую картину. В ответах ниже я опубликовал контрпример, который показывает, почему это Плохая Вещь®.

6
задан arootbeer 25 October 2011 в 03:49
поделиться