嗨,我是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,因为它仅在构造函数执行期间存在。构造函数完成后,局部变量将超出范围,并且不再在程序中的任何位置可用。

07-24 09:38
查看更多