Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Class 通过对象跨类传递变量_Class_Oop_Programming Languages - Fatal编程技术网

Class 通过对象跨类传递变量

Class 通过对象跨类传递变量,class,oop,programming-languages,Class,Oop,Programming Languages,好的,我一直在继续学习类和oop语言。我有点困惑 如果我有一个单独的球员统计类。在那个类中,我有一些私有的int,然后是一些函数来公开地修改它们 假设我想改变,从我的主课上获取这些INT。我创建一个对象并将它们分配给局部变量,然后我可以在主脚本中调用局部变量。然后更新stat类中的变量 我必须在不同的类中创建一个局部变量和一个单独的变量,这似乎有点愚蠢 对我来说,只要我想访问stat类中的变量,就可以在新对象中调用单独的类,但我不能 如果不清楚,请告诉我,因为我可以尝试扩展更多 谢谢 Ben您不

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

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

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

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

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

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

谢谢
Ben

您不必在“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());
    }
}
如果两个功能未连接:

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

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

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

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());
    }
}
同样,谷歌
依赖注入
,这是一个重要的概念,尽可能多地使用它。它产生了良好的
解耦和可测试的
设计


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

什么编程语言?还有,你有任何示例代码吗?你能澄清一下“在一个新对象中调用单独的类”是什么意思吗?谢谢你的回答明确地澄清了问题。但是,在mainClass中创建的对象中,如果我在一个函数中创建对象,我如何在同一个类中的另一个函数中使用它?非常感谢。很明显,我还有很长的路要走:)我绝对会接受你关于依赖注入的建议。再次感谢,Ben@Anim8,不客气,如果回答了您的问题,您可以将答案标记为已接受。:),如果你还有任何问题,请告诉我!