我正在尝试实现 java.But 的 DMD 概念,但未按预期获得输出

I'm trying to implement DMD concept of java.But not getting the output as expected

     class Rectangle extends Tri{
       public void draw() {
         System.out.println("Rectangle");
       }  
     } 

     class Tri {
      public void draw() {
        System.out.println("Triangle");
       }
     }

    class Circle extends Rectangle{
     public void draw() {
      System.out.println("Circle");
      }
     }

    class rect
    {
     public static void main(String[] args) 
     {
      Circle c=new Circle();
      Tri t=new Tri();
      Rectangle r=new Rectangle(); 

      r.draw(); //Rectangle
      r=c;
      r.draw();  //Circle
      t=r;
      t.draw(); // Rectangle expected.But getting Circle as output.
       }
     }

在“t.draw”中,我引用了“t=r”,它应该显示 "Rectangle" 但我得到的输出是 "Circle"。可能是因为之前引用了 r=c。 但这仍然是一个疑问。

您之前已将 c 分配给变量 r

当你到达第 t = r 行时,r = c 已经...所以现在 t = c

为什么要创建变量 t 只是为了将 rc 分配给它?为什么不直接处理 rc 让事情更清楚?

此行为符合预期,因为您已经分配了 r = c,然后分配了 t = r,因此对象 t 引用持有的是 c,即圆。因此它打印输出为 Circle。我希望这可以解释 JAVA.

的行为