0
目的:すべての派生クラスは、基本クラスからいくつかのデフォルト方程式を継承する必要があります。デフォルトの方程式が派生クラスに対して有効でないときは、それを再宣言する必要があります。メンバーは予想通りに交換されません。なぜですか?
ここでは多少ばかげた最小限の例があります。いくつかの神秘的な理由
package Pkg
class Equations
Real x;
end Equations;
class DefaultEquations
extends Equations;
equation
x = 0.0;
end DefaultEquations;
class Base
replaceable DefaultEquations equations extends Equations;
end Base;
end Pkg;
model DuplicateEquations
import Pkg.*;
class CustomizedClass
extends Base;
redeclare Equations equations;
equation
equations.x = 3;
end CustomizedClass;
CustomizedClass customized;
end DuplicateEquations;
は、デフォルトの式がオーバーライドされていない場合:
omc Test.mo Package.mo
class DuplicateEquations
Real customized.equations.x;
equation
customized.equations.x = 0.0;
customized.equations.x = 3.0;
end DuplicateEquations;
ですが、なぜでしょうか?なぜ両方ですかx=0
とx=3
が生成されていますか?
私がpackage
宣言をコメントアウトした場合、私は予想されるx=3
の式しか得られません。