如何调用void方法将其合并到另一个类的方法中?

时间:2013-05-15 17:39:30

标签: java arrays methods

我的任务是创建一个模拟简单在线购物程序的程序。 我们必须: 在主菜单上选择第二个选项时,创建一个包含3个选项的主菜单,然后创建一个子菜单。

我不确定如何从另一个类调用方法,例如:

我得到了一个方法:

public void start() {

位于“GroceryStore.java”文件中

我应该创建一个topMenu方法,当用户输入“1”调用方法时:

public void displayItems(){

^在名为“Stock.java”的文件中

然后打印出在线商店库存的一系列商品。数组中的 Stock.java是

private SalesItem[] items;

谁能告诉我怎么做?我必须为几件事做这件事,我希望我可以将其骨架应用于其他案例。

4 个答案:

答案 0 :(得分:2)

现在,我将假设Stock是一个实例类型(它听起来像一个实例类型),并且你的GroceryStore会引用1或者更多Stock件商品。


您的Stock必须使用new关键字进行实例化。所以

Stock myStock = new Stock(/*parameters for constructor*/);

执行此操作后,您可以像displayItems那样调用myStock方法

myStock.displayItems(); 

答案 1 :(得分:1)

要调用当前实例之外的方法,您有多个选项:

  • 制作方法static(以便它不会附加到任何特定实例)并通过MyClass.method()调用它,这有意义,如果它是无状态对象,主要是实用方法< / LI>
  • 创建一个可以访问的静态实例变量(所以方法不是静态的,但是特定的对象是),然后通过SomeClass.stock.method()调用它,当你需要整个特定类型的单个对象时,这是有意义的。程序
  • 在要从中调用方法的类中创建一个普通的实例变量(只有包含的对象用于HAS-A关系时才有意义)。然后你只需要做this.stock.method()(你可以省略this

答案 2 :(得分:1)

所以start()在GroceryStore类中。

所以在一个公共的静态void主类中你会去:

GroceryStore gs = new GroceryStore();
gs.start();

在你的GroceryStore类中你会有一个看起来像的新方法(你可能希望在GroceryStore对象的构造函数中有Stock stock = new Stock()行 - 会更有意义:

Stock stock = new Stock();
public void topMenu(int parm){
   if(parm==1)then{
      stock.displayItems();
   }
}

最后在Stock类中你有了displayItems方法,它可能看起来像:

public void displayItems(){
  for(int i=0;i<items.length;i++){
     SalesItem temp = items[i];
     System.out.prinlnt(temp.toString());//or this may be temp.getName() or whatever returns a string from this SalesItem object - I dont know what it looks like - you never said!

  }
}

然而,你必须真正了解这里发生了什么,而不仅仅是复制粘贴并运行?!在你调用topMenu方法传递它之前,这实际上不会做任何事情,所以你需要锻炼你将如何通过键盘输入,鼠标点击gui或其他东西来与你的gs对象进行交互: )

答案 3 :(得分:0)

如果方法不在同一个类中,您需要告诉编译器从哪里获取方法。执行此操作的最佳方法是创建一个对象,该对象引用您尝试访问的类(使用New Java关键字和适当的语法,即ClassName objectName = new ClassName() - 您可能需要包括你可能拥有的任何参数。

查看this其他StackOverflow答案 - 用户的问题与您的问题非常相似,因此可能有所帮助。

另外,TutorialsPoint上有关于对象和类的非常好的教程。我建议你看看它并试一试。尝试理解你首先要尝试实现的概念 - 我可以保证你以后会有所帮助,因为这是OO编程中一个非常基本的概念。