TSL语言基础 > Object TSL > 单元中的类

继承单元中的类    

  • 继承单元中的类,和继承常规类不同:
    继承常规类:直接继承一个已知的类,如Type ClassA=Class(TStringList)。
    继承单元中的类:需要通过Type ClassA=Class(Unit1.Class1.Class2...)模式来定义类,Class中包含“单元名.外层类名.内层类名”的完整路径形式,精确指定要继承的类位置。

    具体语法如下:
    Type ClassA=Class(Unit1.Class1.Class2[,OtherClass...])

    例如Type ClassA = Class(Unit1.Class1.Class2),表示 ClassA 将直接继承单元 Unit1 中 Class1 内部定义的嵌套类 Class2。

    书写时需注意,必须完整、准确的指定从单元名到最终类名的全部路径,否则会执行失败。

    注:2025-08-27后的新一代TSL持该功能。

    示例
    定义于 Unit1 中的类结构
    Unit Unit1;
    Interface
    Type Class1=Class
      Type Class2=Class// 嵌套类
        function MethodInClass2();//方法
        class function ClassMethodInClass2();//类方法
      end;
    end;
    Initialization
    Finalization End.

    直接继承 Unit1.Class1.Class2
    Type MyNewClass = Class(Unit1.Class1.Class2)
      function MyNewMethod();
    end;

    创建实例
    //方式一:CreateObject
    obj1:=CreateObject("MyNewClass");
    obj1.MethodInClass2();//调用父类方法
    //方式二:new关键字
    obj2:=new MyNewClass();
    obj2.MethodInClass2();//调用父类方法

    查找类
    classRef:=FindClass("MyNewClass");
    classRef.ClassMethodInClass2();//调用父类中类方法