In reply to kbkdec15:
I think you do not understand how inheritance works.
a_o = new(1) constructs a class A object without knowledge of any classes that may be derived from it. And the fact that you have constructed a class A object has nothing to do with the construction of a separate class B object. So remove the statement a_0 = new(1) from your example and this discussion.
When you extend a base class and then construct the extended class, SystemVerilog (and any other object-oriented language) requires that the new() function of the base class gets executed first, then the new function of the extended class next. By making the first statement of every extended new() function call super.new(), this is effectively how the base new function executes first. The base class at the bottom, in your example class A, does not need to call super.new() because there is no super class that it was extended from.