使用对象跨类传递变量

时间:2013-07-21 06:37:41

标签: class oop programming-languages

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

如果我要为玩家统计数据设置一个单独的类。在那个课程中,我有一些私人的内容,然后是一些公开更改它们的功能。

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

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

对我来说,每当我想访问stat类中的变量时,能够在新对象中调用单独的类是有意义的,但我不能......

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

由于 本

1 个答案:

答案 0 :(得分:2)

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

您可以通过您创建的对象使用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());
    }
}

此外,谷歌dependency injection,这是一个重要的概念,尽量使用它。它产生了良好的decoupled and testable设计

还有很多话要说,人们都有关于这个主题的书籍,OO Design本身就是一门艺术。