class Test1
{
private int i=8;
public static void main(String[] args)
{
Test1 a=new Test1();
System.out.println(a.i);
}
}
对于一个类的私有变量,只能在类内部使用,并且对于实例属性不可以在static上下文中引用。
为什么这个例题没有问题,而把main方法写到另一个类里就不可以,我想知道这其中的原因,理由。
{
private int i=8;
public static void main(String[] args)
{
Test1 a=new Test1();
System.out.println(a.i);
}
}
对于一个类的私有变量,只能在类内部使用,并且对于实例属性不可以在static上下文中引用。
为什么这个例题没有问题,而把main方法写到另一个类里就不可以,我想知道这其中的原因,理由。
解决方案 »
- java怎样实现把网页中选中的图片复制然后转为二进制放在剪贴板?给点提示思路即可
- linux执行class文件成功,打包成jar运行却失败?
- oracle里的sequence谁会~~~
- 本地访问例如http://localhost:8080/jsp/a.jsp等网页非常的卡
- 关于ArrayList类的add()方法
- java 做个类似qq登陆框的程序
- String 转换成 XML 问题请教
- 求一段代码
- 关于java实例的归属问题(在线等待答案谢谢)
- 我想编一个程序,把TXT文件中的某单词,换成另一个。请问思路,请大家指教。谢谢
- ~~~~~~~~~~~~~~~~~请大家帮我优化开启线程的思路~~~~~~~~~~~~~
- 加了package后javac编译就无法通过了
2. “实例属性不可以在static上下文中引用”这个说法不准确,应该是“不能直接引用”,但可以通过创建当前类的实例来引用。这里的a是Test1的一个实例,通过a来引用i,没有问题。
2. “实例属性不可以在static上下文中引用”这个说法不准确,应该是“不能直接引用”,但可以通过创建当前类的实例来引用。这里的a是Test1的一个实例,通过a来引用i,没有问题。回答的不错
(为什么这个例题没有问题,而把main方法写到另一个类里就不可以,)当然不行啊,私有属性只有本类中可以调用,如果其他类的main方法可以调用别的类的私用属性,那java的安全性,封装性就没了。
它放在哪个类中,就属于那个类的一部分。因此也和该类的其他方法一样,可以访问该类的私有变量。所以你把一个方法(这里就是main方法)拿到类的外面,他当然就访问不到私有变量了。2.实例属性不可以在static上下文中引用。
static部分是在类的初始化期间(介于加载和实例化之间)执行。(前几天有一个贴子讨论过)
。也就是说有main方法的时候,实例变量还没有出生呢~那让这个方法到哪里去找这个变量呢?
> 并且对于实例属性不可以在static上下文中引用。
> 为什么这个例题没有问题
> 而把main方法写到另一个类里就不可以,我想知道这其中的原因,理由。首先,楼主这个例子,并没有违背“对于一个类的私有变量,只能在类内部使用”,因为它就是在自己这个类内部的代码里来访问的。其次,也没有违背“对于实例属性不可以在static上下文中引用”,因为,对 i 的访问是通过一个实例对象 a 进行的,虽然语句是写在一个 static 方法内部,但这并不是“static上下文”。最后,如果把这段代码写到另一个类里,显然就违背了第一条。