我在对已初始化的对象使用 getter 方法时遇到问题,但该对象与 getter 方法不在同一类中

问题描述 投票:0回答:1

我正在为我的计算机科学课编写一个基于文本的游戏(我是一个初学者,几乎每天仍在学习新东西),我正在尝试制作一种方法来打印四名党员的信息;然而,我在尝试让 getter 方法获取有关主类中特定玩家对象的信息时遇到了一些麻烦。我正在尝试在不同的类中使用吸气剂。

以下是使用相关方法的三个类:

public class Main {
    
    public static void main(String[] args) {

        UIFunctions.startMenu();

    }//End of main method

    Characters smallMan = new Characters("Stuart Little", 2, 1.2, 0.45, false);
    Characters tallMan = new Characters("Big Mike", 6, 2.0, 0.30, false);
    Characters strongMan = new Characters("Barney Buff", 10, 1.5, 0.10, true);
    Characters deepPockets = new Characters("Guilo Baggin", 3, 1.6, 0.65, false);
    
}//End of main
public class Characters {

    private static String name;
    private static int strength;
    private static double height;
    private static double luck;
    private static boolean isGullible;

    public Characters() {}
    
    public Characters(String characterName, int characterStrength, double characterHeight, double characterLuck, boolean isStupid){
        name = characterName;
        strength = characterStrength;
        height = characterHeight;
        luck = characterLuck;
        isGullible = isStupid;
        
    }

    //--------------------------------------------------------
    // Getter methods
    //--------------------------------------------------------
    
    
    public static String getCharacterName() {
        return name;
    }

    public static int getCharacterStrength() {
        return strength;
    }
    
    public static double getCharacterHeight() {
        return height;
    }
    
    public static double getCharacterLuck() {
        return luck;
    }
}
public class UIFunctions{

public static void groupMenu(smallMan.getCharacterName) {
          
         
      }
}

我尝试在方法声明前面排除角色名称,然后直接将 getter 放入 groupMenu 方法中,但是当我测试程序时什么也没有发生,就这样结束了。

然后我尝试了同样的事情,但这样做了:

public static void groupMenu(){

     smallMan.getCharacterName();
}

但这也失败了。

java object getter
1个回答
0
投票

您正在尝试从不同的类(UIFunctions)访问Characters对象(如smallMan)的属性。您面临的问题与您的角色对象及其属性的范围和使用有关。

将Characters类更改为具有实例变量(从字段中删除static关键字),因为您希望每个角色都有自己的属性集,而不是在类的所有实例之间共享它们。

public class Characters {
    private String name;
    private int strength;
    private double height;
    private double luck;
    private boolean isGullible;

    public Characters() {}

    public Characters(String characterName, int characterStrength, double characterHeight, double characterLuck, boolean isStupid){
        name = characterName;
        strength = characterStrength;
        height = characterHeight;
        luck = characterLuck;
        isGullible = isStupid;
    }

    // Getter methods
    public String getCharacterName() {
        return name;
    }

    public int getCharacterStrength() {
        return strength;
    }

    public double getCharacterHeight() {
        return height;
    }

    public double getCharacterLuck() {
        return luck;
    }
}

在 Main 类中创建 Characters 对象的实例,并在需要时通过将它们声明为静态来使其他类可以访问它们。

public class Main {
    public static Characters smallMan = new Characters("Stuart Little", 2, 1.2, 0.45, false);
    public static Characters tallMan = new Characters("Big Mike", 6, 2.0, 0.30, false);
    public static Characters strongMan = new Characters("Barney Buff", 10, 1.5, 0.10, true);
    public static Characters deepPockets = new Characters("Guilo Baggin", 3, 1.6, 0.65, false);

    public static void main(String[] args) {
        UIFunctions.startMenu();
    }
}

在 UIFunctions 类中,您现在可以使用实例变量和 getter 方法访问字符信息,如下所示:

public class UIFunctions {
    public static void groupMenu() {
        System.out.println("Character name: " + Main.smallMan.getCharacterName());
        System.out.println("Character strength: " + Main.smallMan.getCharacterStrength());
        // Add similar lines for other character attributes
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.