inheritance - Modelica:如何将 Child 类型的实例分配给 Parent 类型的变量?
问题描述
我有课:
class Parent
end parent;
class Child
extends Parent;
end Child;
在另一个类中,我需要声明一个 Parent 类型的变量并通过 Child 类型的实例对其进行初始化;类似于 Java 语句的东西:
Parent p = new Child();
我怎样才能在 Modelica 中做到这一点?
谢谢
解决方案
Modelica 的类概念是 Java 无法比拟的。例如,你不创建新对象,所以没有什么像
Parent p = new Child();
相反,您只需通过编写来实例化一个类
Parent p;
因此,您不能将子对象分配给父基类。相反,Modelica 的继承特性可以用于重新声明。这意味着,您可以在某个地方实例化一个可替换的基类,以后可以使用该redeclare
语句进行更改。
请参阅下面的简单示例。Example2
重新声明cls
到子类,所以我们cls.c=2
在模拟的时候得到。
package Demo
class Parent
constant Real c=1;
end Parent;
class Child
extends Parent(c=2);
end Child;
model Example1
replaceable Parent cls;
end Example1;
model Example2
extends Example1(redeclare Child cls);
end Example2;
end Demo;
总而言之,可以说 Modelica 的面向对象简化为
- 继承,使用
extends
- 重新声明,使用
redeclare
推荐阅读
- javascript - 如何在发布/加载网页之前全局应用 Bootstrap 样式类
- youtube-api - YouTube API:检查其他人的视频是否被货币化
- laravel - 有没有办法在不刷新页面的情况下动态更新我的组件?
- javascript - Photoswipe:无法在边缘浏览器中点击播放
- javascript - 如何将 TypeScript 或 JavaScript 导出到 YAML 列表中
- r - 如何使用 dplyr 有条件地按组更改列中的值?
- corda - 找不到网络参数文件和兼容区域未配置/无法访问
- mongodb - $set 操作的目标数组的最后一个元素
- c# - INotifyPropertyChanged and his null event
- ruby - 如何使用 < 运算符从命令行读取文件并随后读取用户输入?