Java 如何在两个类中使用变量?
我需要能够在所有这些类中看到变量是否为Java 如何在两个类中使用变量?,java,Java,我需要能够在所有这些类中看到变量是否为true public void performAction() { if (door.intersects(HERO)) { System.out.println("ActionPerformed!"); HeroX = 0; HeroY = 0; inside = true; } } 这是每次我按下空格键,现在我想画房子的内部。 在主课上,我画了所有
true
public void performAction() {
if (door.intersects(HERO)) {
System.out.println("ActionPerformed!");
HeroX = 0;
HeroY = 0;
inside = true;
}
}
这是每次我按下空格键,现在我想画房子的内部。
在主课上,我画了所有我想说的东西,比如:
public void paintComponent(Graphics g) {
if (!inside) {
g.drawImage(Background, 0, 0, null);
achilles.Draw(g);
}else if (inside) {
g.drawImage(HouseInside, 0, 0, null);
}
}
我不知道如何在英雄类中更改“内部”并在主类中使用它。我尝试了很多东西,但我不知道该怎么办。inside是英雄对象的属性,因此,如果该属性是公共的,您可以使用heroname.inside访问它 如果属性是私有的(通常应该是私有的),则必须在HERO类内使用公共访问函数,如HERO.isInside,并使用设置函数(如HERO.setInside和HERO.setOutside)对其进行设置
这通常被称为“getter和setter”您可能需要的是全局变量
public class Global{
public static int value;
}
然后,您可以从任何地方访问它们:
Global.value;
如果您的主类引用了Hero类的所有实例,那么通常的最佳做法是Hero类公开如下方法:
public boolean isInside () {
return (inside);
}
public static boolean inside;
if (! Hero.inside) {
private static boolean inside;
public static boolean isInside () {
return (inside);
}
if (! Hero.isInside ()) {
如果Hero类只有一个实例(不太可能,但可以),那么一个选项是在公共静态变量中进行如下操作:
public boolean isInside () {
return (inside);
}
public static boolean inside;
if (! Hero.inside) {
private static boolean inside;
public static boolean isInside () {
return (inside);
}
if (! Hero.isInside ()) {
从Main中引用如下内容:
public boolean isInside () {
return (inside);
}
public static boolean inside;
if (! Hero.inside) {
private static boolean inside;
public static boolean isInside () {
return (inside);
}
if (! Hero.isInside ()) {
或者在私有静态变量中使用如下getter:
public boolean isInside () {
return (inside);
}
public static boolean inside;
if (! Hero.inside) {
private static boolean inside;
public static boolean isInside () {
return (inside);
}
if (! Hero.isInside ()) {
从Main中引用如下内容:
public boolean isInside () {
return (inside);
}
public static boolean inside;
if (! Hero.inside) {
private static boolean inside;
public static boolean isInside () {
return (inside);
}
if (! Hero.isInside ()) {
尝试使用getter获取
英雄
之外的内部
属性,并使用setter对其进行更改:
public class Hero {
private boolean inside;
...
public boolean isInside() {
return this.inside;
}
public void setInside(boolean inside) {
this.inside = inside;
}
}
我还建议你多读一些关于;它将使您更好地了解如何使用Java中的对象。您可以对其进行不同的建模:
public class House {
Location currentLocation=Location.OUTSIDE;
Map<Location, String> layout=new HashMap<>();
public House(){
layout.put(Location.INSIDE,"Draw the inner parts");
layout.put(Location.INSIDE,"Draw the outer parts");
}
public void enterDoor(){
currentLocation=(currentLocation==Location.OUTSIDE)?Location.INSIDE:Location.OUTSIDE;
}
public void draw(){
System.out.println(layout.get(currentLocation));
}
}
公共类房屋{
位置currentLocation=位置.OUTSIDE;
映射布局=新的HashMap();
酒店(){
布局。放置(位置。内部,“绘制内部零件”);
布局。放置(位置。内部,“绘制外部零件”);
}
公共门(){
currentLocation=(currentLocation==Location.OUTSIDE)?Location.inner:Location.OUTSIDE;
}
公众抽签(){
System.out.println(layout.get(currentLocation));
}
}
这里的enterDoor
是一种可以由游戏环境中的事件触发的东西。所以你的房子知道如何根据它的状态画自己
假设您的角色移动到某个坐标(x | y),即门所在的位置,则调用
enterDoor
,从而切换布局。您是在寻找共享变量还是全局状态变量?两者都可以实现你想要的。