如果我想获取类StoreInventory及其属性并在新类中使用这些属性,如何在新类Snacks中包含StoreInventory?
答案 0 :(得分:1)
你说:
如果我想获取类StoreInventory及其属性并在新类中使用这些属性,我如何在新类Snacks中包含StoreInventory?
你的逻辑对我来说闻不对劲。不是相反 - StoreInventory应该持有Snack对象而不是持有StoreInventory对象的Snack对象吗?
请注意,无论您做什么,无论人们建议什么,继承都不是您想要的解决方案。使用组合,可能你的StoreInventory对象应该包含一个Snack数组或一个集合,例如Snack的数组列表 - ArrayList<Snack>
。
如,
public class StoreInventory {
private List<Snack> snackList = new ArrayList<Snack>();
// ... etc...
public void addSnack(Snack snack) {
snackList.add(snack);
}
}
答案 1 :(得分:0)
两种标准方式:
聚合:您的类定义中有一个StoreInventory
数据成员并使用它。 E.g:
class Snacks {
private StoreInventory inventory;
Snacks() {
this.inventory = new StoreInventory();
}
}
继承:您派生自StoreInventory
,例如:
class Snacks extends StoreInventory {
Snacks() {
super(); // <== Initialize the base class
}
}
请注意,如果没有参数,则对super();
的调用不必是显式的;如果你把它遗漏,编译器会为你添加它。但是如果StoreInventory
需要构造参数,那就是你提供它们的方式。
现在你有了这个术语,找到这两个概念的教程应该不会有太多麻烦。
答案 2 :(得分:0)
您可以使用任一继承
class Snacks extends StoreInventory
或组合(在你的情况下最有可能是这个):
class Snacks {
private final StoreInventory storeInventory = new StoreInventory();
}
虽然没有更多信息,但很难说哪个更好,但这些基本上是你的两个选择。
答案 3 :(得分:0)
您可以extend
StoreInventory
类,也可以将其作为新类中的字段包含。
这些技术分别称为继承和组合。
请参阅:http://www.artima.com/objectsandjava/webuscript/CompoInherit1.html
答案 4 :(得分:0)
你可以
class MyClass extends StoreInventory
或更好的选择是使用委托,例如
private final StoreInventory inventory = ....