CLASS 类语法
编译器支持在“全ST文件”中使用 CLASS 定义类,并通过成员变量、方法、继承和动态方法调用组织可复用的控制逻辑。
CLASS 类语法适用于全 ST 文件。类定义、类实例及使用类的 PROGRAM、FUNCTION 和 FUNCTION_BLOCK 可以位于同一个 .st 文件,也可以拆分到多个全 ST 文件中。
支持的主要能力
- 使用
CLASS和END_CLASS定义普通类; - 使用
ABSTRACT CLASS定义抽象类; - 使用
EXTENDS建立单继承关系; - 使用
PUBLIC、PROTECTED和默认私有访问权限; - 在类中定义成员变量和
METHOD; - 使用
OVERRIDE重写父类方法; - 使用
THIS调用当前实例的方法,使用SUPER调用父类实现; - 声明普通实例、类数组、嵌套实例和类指针;
- 在多个全 ST 文件之间引用类和派生类。
快速示例
PROGRAM Main
VAR
counter : cCounter := (Increment := 2);
result : DINT;
END_VAR
result := counter.Add();
END_PROGRAM
CLASS cCounter
VAR
Value : DINT;
END_VAR
VAR PUBLIC
Increment : DINT := 1;
END_VAR
METHOD PUBLIC Add : DINT
Value := Value + Increment;
Add := Value;
END_METHOD
END_CLASS
程序首次调用 counter.Add() 后,result 的值为 2。实例初始化列表中的 Increment := 2 会覆盖类成员声明中的默认值 1。
编写位置
- 在项目树中展开“全ST文件”;
- 新建或打开
.st文件; - 在文件顶层编写
CLASS、PROGRAM、FUNCTION或FUNCTION_BLOCK定义; - 保存文件并重新编译项目。
语法说明
📄️ 类定义、成员与访问控制
定义普通类
📄️ 继承与方法
继承类
📄️ 类实例与类指针
声明类实例
📄️ 多文件完整示例
全 ST 工程使用统一符号表。类、派生类和使用这些类的程序可以拆分到不同的 .st 文件中,编译器会解析跨文件类引用和继承关系。
备注
类是全 ST 源文件中的语言对象,不会作为独立的图形化 POU 节点进行编辑。修改类定义后,需要重新编译使用该类的全 ST 文件和项目。