我的任务是创建一个模拟简单在线购物程序的程序。 我们必须: 在主菜单上选择第二个选项时,创建一个包含3个选项的主菜单,然后创建一个子菜单。
我不确定如何从另一个类调用方法,例如:
我得到了一个方法:
public void start() {
位于“GroceryStore.java”文件中
我应该创建一个topMenu方法,当用户输入“1”调用方法时:
public void displayItems(){
^在名为“Stock.java”的文件中
然后打印出在线商店库存的一系列商品。数组中的 Stock.java是
private SalesItem[] items;
谁能告诉我怎么做?我必须为几件事做这件事,我希望我可以将其骨架应用于其他案例。
答案 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()
调用它,当你需要整个特定类型的单个对象时,这是有意义的。程序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编程中一个非常基本的概念。