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
,从而切换布局。

您是在寻找共享变量还是全局状态变量?两者都可以实现你想要的。