Is it legal to have a handle to a class inside the same class?

In reply to dave_59:

Thank you Dave.

I have a follow up question, in one of your comments you explained how inheritance can be used to access child class methods.

https://verificationacademy.com/forums/uvm/can-we-call-child-class-parent-class

I am trying to do the same but not seeing as expected. Below is the code -

class base_class;

  virtual function void display1();
    $display("Inside base class display1");
  endfunction
  
  virtual function void display2();
    $display("Inside base class display2");
  endfunction
  
  virtual function void display3();
    $display("Inside base class display3");
  endfunction
  
endclass

// extended class 1
 class ext_class_1 extends base_class;
  function void display1();
    super.display1();
    $display("Inside extended class 1");
  endfunction

endclass

// extended class 2
class ext_class_2 extends base_class;
  function void display2();
    super.display2();    
    $display("Inside extended class 2");
  endfunction
  
  
endclass

// extended class 3
class ext_class_3 extends base_class;
  function void display3();
    super.display3();    
    $display("Inside extended class 3");
  endfunction
endclass

// module
module class_polymorphism;
  base_class bc;
  ext_class_1 ec1;
  ext_class_2 ec2;
  ext_class_3 ec3;
  
  initial begin 
    bc  = new();
    ec1 = new();
    ec2 = new();
    ec3 = new();    
    bc.display1();
    bc.display2();
    bc.display3();
  end

endmodule 

Output I am seeing :

Inside base class display1
Inside base class display2
Inside base class display3

What I was expecting :

Inside base class display1
Inside extended class 1
Inside base class display2
Inside extended class 2
Inside base class display3
Inside extended class 3

The extended class method was never called. What am I missing here?