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 在定义和特点上基本一致,只是某些特性用法不同。在实际项目使用中需多加注意。
标签:END,inheritance,继承,子类,ST,FB,PLC,VAR From: https://www.cnblogs.com/JSheng/p/18394974