Java 如何调用void方法将其合并到其他类中的方法中?

Java 如何调用void方法将其合并到其他类中的方法中?,java,arrays,methods,Java,Arrays,Methods,我的任务是创建一个模拟简单网上购物程序的程序。 我们必须: 在主菜单上选择第二个选项时,创建一个包含3个选项的主菜单,然后创建一个子菜单 我不确定如何从另一个类调用方法,例如: 我得到了一个方法: public void start() { 它位于文件“GroceryStore.java”中 我应该创建一个topMenu方法,当用户输入“1”调用该方法时: public void displayItems(){ ^在名为“Stock.java”的文件中 然后打印出在线商店库存的一系列商品。中

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

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

我得到了一个方法:

public void start() {
它位于文件“GroceryStore.java”中

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

public void displayItems(){
^在名为“Stock.java”的文件中

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

private SalesItem[] items;

谁能告诉我怎么做?我有几件事需要这样做,我希望我能把这个框架应用到其他的案例中。

现在,我假设
Stock
是一个实例类型(听起来像是一个实例类型),你的
杂货店
会引用一个或多个
Stock
项目


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

Stock myStock = new Stock(/*parameters for constructor*/);
完成此操作后,您可以像这样调用
myStock
displayItems
方法

myStock.displayItems(); 

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

  • 使该方法成为静态的(这样它就不会被附加到任何特定的实例),并通过
    MyClass.method()
    调用它,如果它是一个无状态对象,主要是一个实用方法,这是有意义的
  • 创建一个可以访问的静态实例变量(因此方法不是静态的,但特定对象是静态的),然后通过
    SomeClass.stock.method()
    调用它,当您希望在整个程序中使用特定类型的单个对象时,这是有意义的
  • 在要从中调用方法的类内创建一个普通实例变量(仅当包含的对象在关系中使用时,这才有意义)。然后您可以简单地将其称为执行
    this.stock.method()
    (您可以省略
    this
    • 所以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!
      
        }
      }
      
      public void displayItems(){
      
      对于(int i=0;i如果方法不在同一个类中,您需要告诉编译器从何处获取方法。最好的方法是创建一个对象,该对象引用您试图访问的类(使用
      New
      Java关键字和适当的语法,即
      ClassName objectName=New ClassName()
      -您可能希望包括您可能拥有的任何参数)

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


      此外,还有一个关于对象和类的非常好的教程。我建议你看一看并试一试。试着先理解一下你要实现的目标背后的概念-我可以向你保证,这将对你以后有所帮助,因为这是OO编程中一个非常基本的概念。

      看起来你已经有了一个pr框架项目。如果你能发布它,它可以给我们一些有用的上下文。如果你能管理一个,那就更好了。谢谢你这就是我要找的。这是任务给我们的一个预制键盘输入法。除了为什么我需要说Stock Stock=new Stock();。您需要它,因为否则GroceryStore对象无法调用displayItems方法-因为它存在于Stock对象的实例中,而不是GroceryStore对象的实例中。因此,我们创建一个新的Stock对象并调用其方法:)。如果这是您的答案,请使用我答案左上角的勾号标记它。干杯!