Difference the line of super.new() in function new()

Dear all,
I hope you are safe.

Q1. Is there any difference between line of super.new() in function new()?
for example 1)

class test extends uvm_test;
function new(string name, uvm_component parent);
    ...
    ...
    ...
    `uvm_info(get_type_name(), "test1", UVM_LOW);
    super.new(name , parent);
endfunction
endclass

for example 2)

class test extends uvm_test;
function new(string name, uvm_component parent);
    super.new(name , parent);
    `uvm_info(get_type_name(), "test1", UVM_LOW);
     ...
     ...
     ...
endfunction
endclass

Is there any difference between example 1 and example 2 ? I’m wondering that there is any rule of the position of super.new() in function new().

Q2. Why does every the function new() is implemented without void not like other function?

In reply to UVM_LOVE:

Example 1 is not legal. Calls to super.new must be the first procedural statement in the function or it gets inserted for you (with no arguments).

The return type of the function new is the type of the class it is constructing, it is not void. Since new is a reserved keyword, it is handled specially and avoids confusion if you tried to declare it with a different return type.