目前,我的应用程序具有以下类层次结构:


“ A类”是父类
“ B类”是“ A类”的子类
“ C类”是“ A类”的子类


目前,“ A类”具有一个称为“ Attribute D”的属性,该属性对于“ B类”是必需的,但在“ C类”中是可选的。

我可以知道代表这种数据结构的最佳方法吗?这样,我们强迫他们使用Class B和Class C来引用字段,而不是让其他人引用ClassA.getAttributeD而不检查它是否为NULL。

最佳答案

Class BAttribute D中添加一个构造函数。在Class C中,只有此属性的设置器。

abstract class A {
   Object attributeD;

   void setAttributeD(Object attributeD) { this.attributeD = attributeD; }
   Object getAttributeD() { return attributeD; }
}

class B extends A {
   B(Object attributeD) { this.attributeD = attributeD; }
}

class C extends A {
}


不要过度使用继承。通常,它会使事情变得更加复杂。您已经可以在问题中看到这一点。

关于java - 可选属性的类层次结构设计,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13601641/

10-10 02:16