使用引用变量引用静态成员

时间:2013-09-25 05:50:11

标签: java

我只是一个初学者..我的查询是..我们可以使用引用变量引用静态成员..但引用变量包含对象的地址,该对象包含类的非静态成员。它是如何工作的?

2 个答案:

答案 0 :(得分:0)

静态成员表示其类的属性。其中非静态成员表示对象的属性。

以Bird类为例,如果我说canFly = true是Bird类的静态属性。

但是假设现在你想要只描述那些无法飞行的鸟,那么你可以使用

Bird penguin = new Bird();
penguin.canFly= false;//canFly is static variable.

这意味着现在你只能解释那些无法飞行的鸟。

其中

penguin.homeTown = coldArea; // is non-static property.

答案 1 :(得分:0)

当你引用一个类(而不是一个对象)时,例如MyLasterGun,那么将找到并加载该类的资源。该类的部分资源是其变量。一旦实例化类,就会实例化非静态变量,但只要加载类就会实例化static个变量。请考虑以下代码:

public class MyLaserGun
{
    public static String target = "Major Movie Metropolis";
    public Timer countdown;

    public void MyLasterGun()
    {
        countdown = new Timer();
    }
}

public class FortressOfDoom
{
    private String target;

    public void FortressOfDoom()
    {
        target = MyLaserGun.target;

        // To access the timer, an actual instance must be created
        MyLaserGun pewpew = new MyLaserGun();
        pewpew.countdown.cancel();
    }
}

您可以通过调用MyLaserGun.target来访问目标,但除非您实例化创建新对象的类,否则无法访问倒计时。

另外,不要将static变量与static final变量混淆,这些变量可以编辑得很好,这些变量是常量且无法更改。

有关何时初始化静态变量的更多信息,请参见When does static class initialization happen?

<强>更新 考虑更新的示例。