当前位置: 首页 > 知识库问答 >
问题:

Modelica:如何将子类型的实例分配到父类型的变量中?

薄欣怿
2023-03-14

我有课:

class Parent 
end parent;

class Child 
  extends Parent; 
end Child;

在另一个类中,我需要声明一个Parent类型的变量,并通过child类型的实例对其进行初始化;类似于Java语句的内容:

Parent p = new Child();

共有1个答案

蔚俊人
2023-03-14

Modelica的类概念与Java的类概念没有可比性。例如,您不创建新对象,因此没有类似

Parent p = new Child();

相反,您只需通过编写

Parent p;

因此,不能将子对象分配给父基类。相反,可以使用Modelica的继承特性进行重新声明。这意味着,您可以在某个地方实例化一个可替换的基类,以后可以使用redeclare语句对其进行更改。

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;
  • 继承,使用扩展
  • 重新声明,使用重新声明
 类似资料:
  • 我想把字典的value元素赋给一个字符串变量。 在swiftUI中,字典中的所有值元素都作为字符串返回?类型 什么时候有绳子?类型分配给字符串变量,该字符串变量在swiftUI应用程序中显示为可选(“字符串尝试显示”)。 如何去掉应用程序显示中的“可选”选项?

  • 我对Java语言中的类型化有一个误解。问题是ClassCastException。例如,在这段代码中,假设动物是Dog类的父类,

  • 问题内容: 我有几个提供的接口 和一个实现第一个的类: 如果我不能更改任何接口,那么在保持实现尽可能通用的同时最好的做法是什么? 编辑 我无法中断实例化的其他一些代码, 因此我在实现中也应该有两种通用类型。 问题答案: 问题是显然不是。Java是强类型的,不会允许您执行此类操作。 您可以将其强制转换为,在这种情况下,您仍然会收到有关未经检查的转化的警告。这意味着此转换是 不安全的 。 或直接使用代

  • 我在Java中读到了关于将超类变量类型化为子类的知识,反之亦然。请告诉我哪些是有效的? 动物是超级类,有猫和狗子类。

  • 我有以下几点: 如何打印的类型? 使用和不起作用。还有其他方法可以打印号码的类型吗?

  • 这基本上是我第一次接触Java泛型类型,我不知道下面的代码有什么问题。 我有一个helper类,它具有一个静态函数inRange-usng-generic类型,该函数应该从输入列表中返回对象列表,这些对象在索引处的对象周围的特定范围内(我还没有测试它,如果它工作正常与否,这不是问题): 然后我想在一个类中使用它: 类型为