class mySecondClass
MySimpleClass instanceOfTypeMySimpleClass;
MySimpleClass instanceTwoOfTypeMySimpleClass;
Real variable1;
equation
variable1 = instanceOfTypeMySimpleClass.variable1;
instanceTwoOfTypeMySimpleClass.variable1 = 3;
end mySecondClass;
你声明一个实例变量 . 每次创建类的实例时,Modelica编译器都会使用语法 <instanceName>.<VariableName> 从对象创建每个类's instance variables for the instance and this is done by objects. You can access an object' s实例变量的一个副本 .
Modelica编译器为每个实例分配一次类变量 . Modelica编译器每次遇到该类的实例时都会为类变量分配内存 . 因此,所有实例 DID NOT 共享类的类变量的相同副本,例如,对于Java中的静态类 . 换句话说,在此示例中,instanceOfTypeMySimpleClass.variable1和instanceTwoOfTypeMySimpleClass.variable1是两个不同的变量 .
1 回答
首先,Modelica只有一种类型的对象,类和其他对象(模型,记录,包)只是具有限制的特殊类型的类 . 这意味着每个对象必须遵循相同的规则,因此我将引用对象类,但我将编写的内容将应用于每个Modelica对象 . 每个对象实例化变量意味着如果你有一个类似下面的Modelica类:
在instanceOfTypeMySimpleClass中声明成员变量(如MySimpleClass)时:
你声明一个实例变量 . 每次创建类的实例时,Modelica编译器都会使用语法
<instanceName>.<VariableName>
从对象创建每个类's instance variables for the instance and this is done by objects. You can access an object' s实例变量的一个副本 .Modelica编译器为每个实例分配一次类变量 . Modelica编译器每次遇到该类的实例时都会为类变量分配内存 . 因此,所有实例 DID NOT 共享类的类变量的相同副本,例如,对于Java中的静态类 . 换句话说,在此示例中,instanceOfTypeMySimpleClass.variable1和instanceTwoOfTypeMySimpleClass.variable1是两个不同的变量 .
“Modelica类的变量是按对象实例化的 . ”意在描述这种差异 .
马克,我希望这会有所帮助