Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.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
如何从另一个JAVA类访问变量_Java_Oop_Object - Fatal编程技术网

如何从另一个JAVA类访问变量

如何从另一个JAVA类访问变量,java,oop,object,Java,Oop,Object,因此,我正在开发一个程序来模拟一个采集系统,主系统接收项目,但有不同类型的项目,如需要id检查的项目等。。。我使用一个多态方法来访问这些不同的类,但是我是否可以根据访问另一个类的方法中发生的情况更改主类中的变量 例: 假设我必须为所有非批量项目保留集合的预期权重,并且在itemCollection类中有一个名为bulk的变量,那么我如何使用该项目不是批量的事实呢。我可以从多态的AlgolItem类方法中更改AlgolItem类中itemCollection的批量变量吗 如何从另一个JAVA类访问

因此,我正在开发一个程序来模拟一个采集系统,主系统接收项目,但有不同类型的项目,如需要id检查的项目等。。。我使用一个多态方法来访问这些不同的类,但是我是否可以根据访问另一个类的方法中发生的情况更改主类中的变量

例:

假设我必须为所有非批量项目保留集合的预期权重,并且在itemCollection类中有一个名为bulk的变量,那么我如何使用该项目不是批量的事实呢。我可以从多态的AlgolItem类方法中更改AlgolItem类中itemCollection的批量变量吗

如何从另一个JAVA类访问变量

通常情况下,您希望避免这种情况,并支持用于这种情况的方法:getter用于检索值,setter用于从其他类的对象中设置值

我可以从多态的AlgolItem类方法中进行操作吗 我是否可以从Item更改itemCollection的批量变量 上课

添加批量项目并不意味着所有项目都是批量项目。您应该对
ItemCollection
中的
bulk
字段给出明确的语义

关于更新集合中无散装物品的重量,我会以另一种方式进行操作,因为物品的集合取决于物品:在集合中添加物品时,检查物品是否散装,如果不是:根据更新集合的重量。
通常,您希望尽可能避免类/对象之间的双向耦合。
您还应该在item类/接口中定义一个
boolean isBulk()
方法

ItemCollection
类中,
add()

public void add(Item item){
   if (!item.isBulk()){
      weight += item.getWeight();
   }
   else{
       bulk = item.isBulk(); // as discussed check the relevance of this flag.
   }
   // ...
}

您可能想发布更多的代码,最好是一个小型的自包含的代表性程序代码。这将有助于更好地理解您的问题。如果类ItemCollecion中有一个名为“bulk”的变量,则从另一个类引用它必须声明为public,否则ItemCollection必须有一个public getter for bulk,该getter返回其值
bulk=bulk是一个毫无用处的语句。@FredK当然。我对这个领域的意义不是很有信心,我可能把这部分搞砸了。
public void add(Item item){
   if (!item.isBulk()){
      weight += item.getWeight();
   }
   else{
       bulk = item.isBulk(); // as discussed check the relevance of this flag.
   }
   // ...
}