繁体   English   中英

Java,引用一个类的对象?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM