In reply to dave_59:
"Since a class construction ... requires calling super.new() as the first statement"
To be clear, super.new() is automatically called. I believe the only reason to call super.new() is when you wanted to pass an argument to the base constructor, such as to override a default.
I tested with some sample code here (but don't have access to all the major simulators).
https://www.edaplayground.com/x/4ibU
From the 2005 SystemVerilog spec (ieee1800-2005), Section 7.14 Super, page 90.
Quote:
When using the super within new, super.new shall be the first statement executed in the constructor. This is because the superclass must be initialized before the current class and, if the user code does not provide an initialization, the compiler shall insert a call to super.new automatically.
note: I originally typed this up thinking dave_59 made a mistake. But now I see that he did not write that super.new() needed to be explicitly called. So, yes, the compiler will insert it, if the coder does not.
Thanks for great and clear answers, as always, dave_59.