你可以在另一个类的方法中调用变量吗?

时间:2015-12-13 18:22:10

标签: java class methods hashmap zoo

您好我是prgramming的新手,目前正在使用java进行项目。

我正在模拟动物园,动物吃特定的食物,食用后,它们会获得特定的健康状况,并产生特定量的废物。

为了做到这一点,食物必须存储在HashMap中的FoodStore类中。为了做到这一点,我创建了一个名为food的独立类,并创建了具有健康和废物属性的方法:

public class Food {

public int healthAdd;
public int wasteProd;

public Food hay(){
    healthAdd = +1;
    wasteProd =4;
    return null;
}

然而,当我喂养动物时,我必须表明它们现在已经获得了新的健康点并产生了废物。

所以我想知道是否可以访问我已初始化的变量,例如,healthAdd& amp; wasteProd在另一个类的FoodClass的“hay”方法中?

对不起,如果这看起来很长篇大论:)

1 个答案:

答案 0 :(得分:1)

Java中的变量可以有两种类型。您可以拥有"实例变量" ,您可以拥有"本地变量" (还有我赢得的静态变量&#39 ;讨论)。

局部变量在方法内部或花括号内定义,只有在定义的范围处于活动状态时才有效。换句话说,如果在大括号内定义了局部变量,则只要执行退出那些大括号,它就不再存在。

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