1

好的,所以我一直在继续学习类和 oop 语言。我有点困惑。

如果我有一个单独的球员统计类。在那个类中,我有一些私有整数,然后是一些公开更改它们的函数。

假设我想改变并从我的主要课程中获取这些整数。我创建一个对象并将它们分配给局部变量,然后我可以在我的主脚本中调用局部变量。然后更新 stat 类中的变量。

我必须在不同的类中创建一个局部变量以及一个单独的变量,这似乎有点愚蠢。

对我来说,只要我想访问 stat 类中的变量,就可以在新对象中调用单独的类,但我不能......

如果不清楚,请告诉我,因为我可以尝试扩展更多。

谢谢本

4

1 回答 1

2

您不必在“主”类中创建新变量....

您可以通过您创建的对象使用 getter 和 setter。

此外,将玩家统计数据中的变量复制到主类也不是一个好主意,因为现在您必须维护相同数据的两个副本,至少在您进入主类范围之前是这样。如果处理不当,也可能导致数据不一致。

假设您使用的是 Java,您可以这样做。

public class PlayerStats{
    private int var1=20;
    public void setVar1(int var1){
        this.var1=var1
    }
    public int getVar1(){
        return var1
    }
}

public class mainClass{
    PlayerStats pStats = new PlayerStats();
    pStats.getVar1();
    pStats.setVar1(14);
    System.out.println(pStats.getVar1());
}

感谢您的回答,但是,在 mainClass 中创建的对象中,如果我在一个函数中创建对象,如何在同一类的另一个函数中使用它?

取决于这两个函数的连接方式和连接方式以及该对象对您的类的重要性。

如果对象对类非常重要:

也就是说,您几乎在所有功能中都使用它,您的类围绕着玩该对象,然后您可以在类级别创建它沿着这些线

public class mainClass{
    PlayerStats pStats = new PlayerStats();

    public void function1() {
        pStats.setVar1(14);
        System.out.println(pStats.getVar1());
    }
    public void function2(int x) {
        pStats.setVar1(x);
        System.out.println(pStats.getVar1());
    }
}

如果两个功能没有连接:

如果可能的话,只需在函数范围内创建一个新对象。这比在类级别创建对象要好,因为在函数完成执行后,对象就可以进行垃圾回收了。然而,只要对象(主类的实例)在内存中,在类级别创建的对象就会留在内存中。

如果连接了两个函数,即您从第二个函数内部调用一个函数:

您可以将对象作为参数传递,沿着这些方向传递

public class mainClass{
    public void function1() {
        PlayerStats pStats = new PlayerStats();
        pStats.setVar1(14);
        function2(pStats)
    }
    public void function2(PlayerStats x) {
        System.out.println(pStats.getVar1());
    }
}

还有 google dependency injection,这是一个重要的概念,尽量多用。它产生了良好的decoupled and testable设计

还有很多要说的,人们已经写了关于这个主题的书籍,OO 设计本身就是一门艺术。

于 2013-07-21T06:46:52.190 回答