TSL语言基础 > Object TSL > 方法

隐藏    

  • 如果在子类中重写父类的方法确没有使用override标志符,子类的方法隐藏了基类的方法,而非覆盖。父类中调用覆盖的方法时,实际执行的是父类的方法。如果当前对象是子类的实例时,执行的还是父类的方法。因为方法在子类型中给隐藏了,而没有被覆盖。

    示例:

    program test;

    type Figure = class
      Function Draw();
      Begin
        Writeln("draw Figure");
      End;

      Function DrawAction();
      Begin
        Draw();
      End;
    End;
    Type Ellipse = class(Figure)
      Function Draw();//注意没有override
      Begin
        Writeln("draw Ellipse");
      End;
    end;

    Begin
      F:=CreateObject("Figure");
      F.DrawAction();//输出Figure
      E:=CreateObject("Ellipse");
      E.DrawAction();//输出Figure
    End.

    与上节的例子不同,子类中定义Draw方法没有使用override关键字,说明子类的Draw方法隐藏了父类的Draw方法.
    在父类在中调用Draw方法时,始终执行的是父类的Draw方法.