我只是一个初学者..我的查询是..我们可以使用引用变量来引用静态成员..但是引用变量包含对象的地址,其中包含类的非静态成员..它是如何工作的?
问问题
89 次
2 回答
1
例如,当您引用一个类(不是一个对象)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
变量与常量且不能更改的变量混淆。
有关何时初始化静态变量的更多信息,请参阅静态类初始化何时发生?.
更新 考虑更新的示例。
于 2013-09-25T05:58:32.400 回答
0
静态成员意味着它的类属性。其中非静态成员表示对象的属性。
以 Bird 类为例,所以如果我说 canFly = true 是 Bird 类的静态属性。
但是假设现在你只想描述那些不会飞的鸟,那么你可以使用
Bird penguin = new Bird();
penguin.canFly= false;//canFly is static variable.
这意味着现在你只描述那些不能飞的鸟。
然而
penguin.homeTown = coldArea; // is non-static property.
于 2013-09-25T05:57:02.110 回答