继承单元中的类,和继承常规类不同:
继承常规类:直接继承一个已知的类,如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();//调用父类中类方法