Why virtual methods are required?

class base_class;
   
 virtual function void display;
    $display("Inside base_class");
  endfunction
   
endclass
  
class extended_class extends base_class;
   
  function void display;
    $display("Inside extended class");
  endfunction
   
endclass
 
module virtual_class;
  initial begin
    base_class     b_c;
    extended_class e_c;
     
    e_c = new();
    b_c = e_c;
     
    b_c.display();
  end
endmodule

output:Inside extended class

//here method in extnd class are executing bcz of virtual method in base class.but we can get extnd class display by directly with e_c.display()?
why do we make b_e=e_c amd virtual?

In reply to venkatesh konduru:

This is one of the basic principles of object oriented programming: polymorphism.

You may want to see my SystemVerilog OOP for UVM verification course, especially the second session on inheritance.