Ответ 1
Компилятор действительно мешает вам стрелять в ногу здесь. B не полностью сконструирован только после вызова супер-конструктора, поэтому, если вы передадите это (если компилятор разрешил его) в качестве ссылки, и он вызывает метод на B, B будет находиться в недопустимом состоянии и будет вызывать все виды от неприятных проблем (на самом деле, A все еще не инициализирован, ни какой-либо класс в цепочке, включая Object).
Очевидное решение состоит в том, чтобы обеспечить функциональность вне B и передать ее конструктору параметра. Конкретные решения будут зависеть от конкретной проблемы, но статический вложенный класс внутри B (он должен быть статичным по той же причине - внутренний класс имеет неявную ссылку на экземпляр внешнего класса) мог бы обеспечить эту функциональность, возможно. Возможно, вам нужно переосмыслить взаимосвязь между параметром B и его суперклассом. Все зависит от случая.