ГОСТ Р МЭК 61131-3—2016
6.6.5.5.3 OVERRIDE метод
Порожденный класс может переопределять (заменять) один или более унаследованных методов
своими собственными реализациями метода (методов). При переопределении базовых методов при
меняются следующие правила:
1 Метод, переопределяющий унаследованный метод, имеет такую же сигнатуру (имя метода и
переменные) в пределах области действия класса.
2 Метод, переопределяющий унаследованный класс, должен иметь следующие свойства:
- ключевое слово OVERRIDE следует за ключевым словом METHOD;
- порожденный класс имеет доступ к базовым методам, которые определены как PUBLIC or
PROTECTED или NTERNAL в том же пространстве имен;
- новый метод будет иметь те же спецификаторы доступа. Но спецификатор FINAL может быть
использован для переопределенного метода.
Пример — METHOD OVERRIDEmb.
6.6.5.5.4 FINAL для классов и методов
Метод со спецификатором FINAL не будет переопределяться. Класс со спецификатором FINAL не
может быть базовым классом.
Пример 1— METHODFINAL mb
Пример 2 — CLASSFINAL el.
6.6.5.5.5 Ошибки при использовании ключевых слов (EXTENDS. SUPER. OVERRIDE. FINAL)
Следующие ситуации рассматриваются как ошибка:
1 Порожденный класс определяет переменную с именем переменной (определенной или унас
ледованной). уже содержащейся в базовом классе. Данное правило не применяется к переменным,
объявленным как PRIVATE.
2 Порожденный класс определяет метод с именем, уже содержащемся в базовом классе.
3 Порожденный класс порождается из его собственного базового класса (прямо или косвенно), то
есть рекурсия не разрешена.
Класс определяет метод с ключевым словом OVERRIDE, который не переопределяет метод ба
зового класса.
Пример — Наследование и переопределение
Класс, расширяющий класс LIGHTROOM.
CLASS LIGHTROOM
VARLIGHT: BOOL; ENDJ/AR
METHOD PUBLICDAYTIME
LIGHT:* FALSE;
END_METHOD
METHOD PUBLICNIGHTTIME
LIGHT:* TRUE;
END_METHOD
END_CLASS
CLASS UGHT2ROOMEXTENDS LIGHTROOM
VARLIGHT2: BOOL: END_VAR II Secondlight
METHODPUBLIC OVERRIDEDAYTIME
LIGHT :* FALSE;
IIДоступ к переменнымродительского класса
LIGHT :* FALSE;
И конкретная реализация END_METHOD
METHOD PUBLIC OVERRIDENIGHTTIME
LIGHT := TRUE;IIДоступ к переменнымродительского класса
120