Java,引用类的对象?

时间:2013-01-27 18:24:11

标签: java

如果我想获取类StoreInventory及其属性并在新类中使用这些属性,如何在新类Snacks中包含StoreInventory?

5 个答案:

答案 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 = ....