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



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

例如,当您引用一个类(而不是您注意的对象)时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变量混淆,这些变量是常量且无法更改。

有关何时初始化静态变量的更多信息,请参阅何时进行静态类初始化?。

更新请考虑更新的示例。

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

举一个 Bird 类的例子,所以如果我说 canFly = true 是 Bird 类的静态属性。

但是假设现在您只想描述那些不会飞的鸟,那么您可以使用

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

这意味着现在你只在描述那些不会飞的鸟。

其中作为

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

最新更新