抽象类可以嵌入另一个类吗?

时间:2015-02-02 18:02:48

标签: orientdb

文档说

  

抽象类对于支持面向对象至关重要,而不会使用始终为空的自动创建的集群来典型地发送垃圾邮件。

但它也说

  

无法拥有实例的类

但是,我想在A类中嵌入一个列表类B,而不是从抽象类B继承A类。这是允许的吗? 例如:

enter code here
propVal {
  locType : ""
  eleName : ""
  ...
  values :[valueStamp]
}

valueStamp {
  value : any,
  stamp : actionStamp
}

actionStamp{
 // various attributes that say who, when, where change was made
}

用于许多类,跟踪各个字段的更改。 它们永远不会单独使用,但不能继承,因为它们可以在一个类中使用多次 示例父类

classA{
    helperAId:"",
    helperAProps : embeddedList of PropVals,
    helperBId : "",
    helperBProps : embeddedList of PropVals
}

1 个答案:

答案 0 :(得分:1)

  • 重要提示:OrientDB支持的类层次结构类似于由Java等流行语言实现的OO原则。但是,它不一样,因此存在重要差异!
  • 是的,您可以在类类型B中嵌入类型为A的类(列表)。这是完全有效的,也是一个很常用的结构。这是使用EMBEDDED类型完成的。
  • OrientDB不支持接口或mixin的概念,只支持类和抽象类。因此,类只能固有(扩展)单个父类。在您的用例中,我将创建一个抽象的ActionStamp类(或者您命名的任何类)并让其他类扩展它。BA类都可以扩展它{{1 } class

所以,使用你的例子: ActionStamp