Насколько корректно делать конструктор выше по доступности , чем сам класс ?
Вопрос в том зачем. Во-первых, конструктор предназначен для того чтоб коректно создать екземпляр класса извне, то есть уде подразумевается, что к нему должен быть доступ из вне. Во-вторых, если ты сделаешь конструктор private или protected, ты к нему просто не сможешь обратиться, а тогда возникает вопрос зачем он вообще нужен? Поэтому, обычно конструктор делают public, в редких случаях internal.