Inheritance 继承情况下的设计问题

Inheritance 继承情况下的设计问题,inheritance,Inheritance,我有一个与设计相关的问题w.r.t继承 Class A protected field1 protected field2 protected field3 private List<B> B类应包含field1、field2和field3+某些它自己的属性 B是否可以作为A的子类 这种关系不知怎么的感觉不太好 我的要求是,, 当对象A有field1、field2和field3时,我们应该确保 对象A列表中的每个对象都应该具有相同的字段 是否有任何替代方案来确保上述条件 谢谢。

我有一个与设计相关的问题w.r.t继承

Class A

protected field1
protected field2
protected field3

private List<B>
B类应包含field1、field2和field3+某些它自己的属性

B是否可以作为A的子类

这种关系不知怎么的感觉不太好 我的要求是,, 当对象A有field1、field2和field3时,我们应该确保 对象A列表中的每个对象都应该具有相同的字段

是否有任何替代方案来确保上述条件


谢谢。

继承是一种选择。我会在这种情况下使用它

另一种可能是合成,但是您需要以某种方式公开字段,这取决于预期用途

Class B {

private A a

// Constructor
public B(A instanceOfA) {
   this.a = instanceOfA
}

public setField1(value) {
   this.a.field1 = value
}

...

}

除非这两门课之间有严格的is-a关系,否则你应该一直坚持写作。组合设计更灵活,更易于维护。

难道不是……对象B列表中的每个对象都应该有相同的字段吗?你有一个正确的观点,不过在这种情况下,我宁愿使用继承,因为它使更改更透明。否则,如果您更改类别A,您也必须更改类别B。此外,似乎所有字段都必须相同,因此我假设这是一个is-A关系