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