需要在静态和非静态方法中使用实例
Need to use instance in static and non-static methods
我正在制作一个小文字游戏。开始对话在我的主要(静态)方法中。从那里,它会根据您的选择将您转到其他方法。
现在我想我需要一个 class 的实例才能正常工作。
例如:
Program p = new Program();
if(stuff){
p.room1();
}
else{
p.room2();
}
在那些其他方法中,全局变量会发生变化。
所以在main方法上面有:
public bool hasItem = false;
所以 room1() 看起来像,
public void room1(){
if(stuff){
p.hasItem = true;
}
}
我知道我搞砸了 main 方法。我是在 main 方法内部还是外部声明实例 "p"?我都试过了,但两种方式都出错了。
编辑:我最终在主要方法之外声明了一个静态 "Program" 以在其他地方使用。感谢您的帮助!
首先,您可以在 main 方法之外创建静态 Program
,或者在 main 方法内声明一个程序,具体取决于您的体系结构。
其次,您不必从实例方法中引用实例。只需使用字段名称。像这样:
public void room1(){
if(stuff){
hasItem = true;
}
}
如果您想明确说明,可以使用 this.hasItem
。
或者更好的是,制作一个全新的 class 来保持您的状态。在 class 中使用 main 方法拥有实例成员是一种笨拙的设计。
我正在制作一个小文字游戏。开始对话在我的主要(静态)方法中。从那里,它会根据您的选择将您转到其他方法。
现在我想我需要一个 class 的实例才能正常工作。
例如:
Program p = new Program();
if(stuff){
p.room1();
}
else{
p.room2();
}
在那些其他方法中,全局变量会发生变化。
所以在main方法上面有:
public bool hasItem = false;
所以 room1() 看起来像,
public void room1(){
if(stuff){
p.hasItem = true;
}
}
我知道我搞砸了 main 方法。我是在 main 方法内部还是外部声明实例 "p"?我都试过了,但两种方式都出错了。
编辑:我最终在主要方法之外声明了一个静态 "Program" 以在其他地方使用。感谢您的帮助!
首先,您可以在 main 方法之外创建静态 Program
,或者在 main 方法内声明一个程序,具体取决于您的体系结构。
其次,您不必从实例方法中引用实例。只需使用字段名称。像这样:
public void room1(){
if(stuff){
hasItem = true;
}
}
如果您想明确说明,可以使用 this.hasItem
。
或者更好的是,制作一个全新的 class 来保持您的状态。在 class 中使用 main 方法拥有实例成员是一种笨拙的设计。