目前,我的应用程序具有以下类层次结构:
“ A类”是父类
“ B类”是“ A类”的子类
“ C类”是“ A类”的子类
目前,“ A类”具有一个称为“ Attribute D”的属性,该属性对于“ B类”是必需的,但在“ C类”中是可选的。
我可以知道代表这种数据结构的最佳方法吗?这样,我们强迫他们使用Class B和Class C来引用字段,而不是让其他人引用ClassA.getAttributeD而不检查它是否为NULL。
最佳答案
用Class B
在Attribute 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/