In addition to the already given answers it is also interesting to have a look at the semantics of object creation.
If class B inherits from class A, then all objects of class B have two components: The parts of A (which are inherited), and the parts of B (which may override some parts of A).
So you can think of an object as the sum of the parts of all ancestor classes (plus the parts of its own class).
Now think about object creation: If an object for class B is created, not only the B part must be created, but also the A part. In other words, if a constructor for B is called, a constructor for A must be called as well (this is always the case, even if you do not explicitly call base()
in C# or MyBase.New()
in VB).
If B inherits its contructors from A, then it could override such a constructor. That could lead to a situation where A have no contructor left to build its own part (because all constructors are overriden), which makes object creation of A parts impossible.
Not inheriting constructors does not break inheritance, it makes it possible!