PLC结构化文本(ST)——承继(inheritance)
PLC Structured Text Object Oriented Programming
PLC结构化文本(ST)——承继(inheritance)
承继的概念
承继是面向目标程序规划中最重要的概念之一。承继答应咱们依据一个类来界说另一个类,这使得创立和保护应用程序变得更简单。一起也有利于重用代码和节约开发时刻。
当创立一个类时,程序员不需要彻底从头编写新的数据成员和成员函数,只需要规划一个新的类,承继了已有的类的成员即可。这个已有的类被称为的基类,这个新的类被称为派生类。---C#承继|菜鸟教程
承继是java面向目标编程技术的一块柱石,由于它答应创立分等级层次的类。
承继便是子类承继父类的特征和行为,使得子类目标(实例)具有父类的实例域和办法,或子类从父类承继办法,使得子类具有父类相同的行为。---Java承继|菜鸟教程
承继特色
- 1.不支撑多重承继,但一个类能够完成多个接口。
- 2.能够承继类的三大成员(字段、特色、办法等),除非这些成员被标记为Private(私有)。只能承继非私有成员。
Tips : 同样在结构化文本编程中,若特色(Property) 和办法(Method) 被标记为Private那么子类也将无法承继私有成员,该规矩与C#和Java共同。
承继的格局
IEC61131-3增加了对面向目标编程的支撑,承继关键字为EXTENDS
。
- 1.类(FB)承继
// 父类FB_Animal FUNCTION_BLOCK FB_Animal VAR_INPUT END_VAR VAR_OUTPUT END_VAR VAR END_VAR ------------------------- // 子类FB_Dog FUNCTION_BLOCK FB_Dog EXTENDS FB_Animal VAR_INPUT END_VAR VAR_OUTPUT END_VAR VAR END_VAR
- 2.接口承继
// 父类接口“轿车” INTERFACE I_Car // 子类接口“比亚迪” INTERFACE I_BYD EXTENDS I_Car
- 3.结构体承继
TYPE ST_Fruits : STRUCT colour : STRING; // 色彩 weight : REAL; // 分量 END_STRUCT END_TYPE ------------------------- // ST_Apple 承继 ST_Fruits,子类具有三个成员:colour,weight,price TYPE ST_Apple EXTENDS ST_Fruits : STRUCT price : REAL; // 价格 END_STRUCT END_TYPE
在C#或Java高档语言中,父类类型变量能够接纳子类类型目标,此特性也适用于PLC ST。
PROGRAM MAIN
VAR
animal : FB_Animal;
dog : FB_Dog;
END_VAR
----------------------
animal := dog;
Tips : 尽管编译没有过错也能正常运转,但是在程序初始化的时分现已创立了两个不同的目标 animal 和 dog ,经过赋值“:=”仅仅将 animal 目标数据复制到 dog 目标,并没有将内存地址复制曩昔。
实践PLC OOP编程中,并不会选用此种方法接纳子类目标,较为常见的作法是运用接口(INTERFACE)
。
总结
PLC ST OOP的承继与 C#
和 Java
在界说和特色上根本共同,仅仅某些特性用法不同。在实践项目运用中需多加留意。