Конструктор класса является очень важной концепцией в большинстве ООП
Классы, предоставляя состояние и средства для манипулирования этим состоянием, позволяют легче поддерживать инварианты. Роль конструкторов состоит в том, чтобы привести класс в состояние, соответствующее этим инвариантам (или выбрасывающим, таким образом, запрещающее использование объекта invliad).
это несколько слабее, чем предполагалось во многих языках, так как конструктору разрешено передавать свою собственную ссылку "this" в другом месте, но это по крайней мере находится под контролем класса (поэтому он может знать, что он находится в достаточно стабильном и допустимом состоянии чтобы оно было доступно остальному миру)
Наследование делает этот комплекс сложным, поскольку B является -A в очень реальном смысле и, следовательно, может вызывать любой из методов, предоставляемых A. Поэтому части B, которые являются A, должны получить возможность инициализировать себя, прежде чем B получит взгляд в, таким образом, конструктор для A вызывается до того, как начинается настоящая работа конструктора B.