Using virtual when overriding virtual method

Code Example:::

Each of these functions are in a separate derived class extending lets say uvm_test


//example 1
class AAA extends uvm_test
   //code...
   virtual function void build_phase (uvm_phase phase)
      //code...
   endfunction
  //code...
endclass


//example 2
class BBB extends uvm_test
   //code...
   function void build_phase (uvm_phase phase)
      //code...
   endfunction
  //code...
endclass

In example 1, we use virtual when overriding an already virtual method, in example 2, we do not use the virtual keyword… I have seen examples both ways and no one seems to explain the usage of virtual in these specific cases. Can someone explain this to me? Thank you.

In reply to rbhangal:

Is this a matter of style or does it have some meaning?? I found this

A virtual method may override a non-virtual method, but once a method has been identified as virtual, it
shall remain virtual in any subclass that overrides it. In that case, the virtual keyword may be used in later
declarations, but is not required.

so I am leaning towards style but any help would be appreciated.

Once a method becomes virtual in an extended class, no other extension of the class can make it non-virtual. The LRM makes the virtual keyword optional. Some people despise typing extra characters when the compiler can figure it out for you, but I think you are not doing the user any favors by making it harder to understand the intent of the code. I suggest always using the keyword.