[英]Java, reference to an object of a class?
如果我想使用StoreInventory类及其属性,并在新类中使用这些属性,如何在新类Snacks中包含StoreInventory?
您声明:
如果我想使用StoreInventory类及其属性,并在新类中使用这些属性,如何在新类Snacks中包含StoreInventory?
你的逻辑对我不对。 难道不是另一回事吗?StoreInventory应该保存Snack对象,而不是Snack对象保存StoreInventory对象吗?
请注意,无论您做什么,无论人们怎么说,继承都不是您想要的解决方案。 使用组合,并且您的StoreInventory对象可能应该包含Snack数组或一个集合,例如Snack的数组列表-ArrayList ArrayList<Snack>
。
例如,
public class StoreInventory {
private List<Snack> snackList = new ArrayList<Snack>();
// ... etc...
public void addSnack(Snack snack) {
snackList.add(snack);
}
}
两种标准方式:
聚合:您的类定义中有一个StoreInventory
数据成员,并可以使用它。 例如:
class Snacks { private StoreInventory inventory; Snacks() { this.inventory = new StoreInventory(); } }
继承:您从StoreInventory
派生,例如:
class Snacks extends StoreInventory { Snacks() { super(); // <== Initialize the base class } }
注意对super();
的调用super();
如果没有参数,则不必明确; 如果您将其保留,编译器将为您添加它。 但是,如果StoreInventory
需要构造参数,那就是您提供它们的方式。
现在您有了术语,为这两个概念找到教程应该不会有太多麻烦。
您可以使用任一继承
class Snacks extends StoreInventory
或组成(在您的情况下,很可能是这样):
class Snacks {
private final StoreInventory storeInventory = new StoreInventory();
}
尽管没有更多信息,但很难说哪个会更好,但是基本上这是您的两个选择。
您可以extend
StoreInventory
类,也可以extend
其作为字段包含在新类中。
这些技术分别称为继承和组合。
看到这个: http : //www.artima.com/objectsandjava/webuscript/CompoInherit1.html
你可以
class MyClass extends StoreInventory
或更好的选择是使用委托,例如
private final StoreInventory inventory = ....
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.