嗨,我是prgramming的新手,目前正在用Java做一个项目。
我正在对一个动物园进行模拟,在动物园中,动物吃特定的食物,食用后,它们将获得一定量的健康,并产生一定量的废物。
为此,必须将食物存储在HashMap中的FoodStore类中。为此,我创建了一个单独的类,称为食物,并创建了具有健康和废物属性的方法:
public class Food {
public int healthAdd;
public int wasteProd;
public Food hay(){
healthAdd = +1;
wasteProd =4;
return null;
}
但是,当我给动物喂食时,我必须证明它们现在已经获得了新的健康点并产生了废物。
因此,我想知道是否可以访问我在其他类中通过FoodClass的“ hay”方法中的healthAdd&wasteProd初始化的变量?
对不起,如果这似乎ed绕了:)
最佳答案
Java中的变量可以有两种类型。您可以有“实例变量”,也可以有“局部变量”(还有静态变量,我将不讨论)。
局部变量在方法内部或花括号内定义,并且仅在定义的作用域处于活动状态时有效。换句话说,如果在括号内定义了局部变量,则在执行退出这些括号后,该变量便不再存在。
实例变量在class
定义内定义,但在任何方法或其他花括号之外。这些变量的生存时间与该类的相应实例的生存时间一样长。
例如:
public class MyClass {
public int myInstanceVar1 = 0; // lives for as long as this MyClass
// instance exists
public MyClass() { // Constructor for MyClass instances
int myLocalVar1 = 0; // lives only during the constructor invocation
:
:
}
:
:
}
在上面的代码段中,您将可以访问不是
myInstanceVar1
的任何MyClass
对象上的null
字段。实例字段的存在时间与对象的存在时间一样长。但是,您将无法访问
myLocalVar1
,因为它仅在构造函数执行期间存在。构造函数完成后,局部变量将超出范围,并且不再在程序中的任何位置可用。