黑马程序员技术交流社区
标题:
静态不能访问非静态,只能访问静态的问题。
[打印本页]
作者:
张亮
时间:
2012-4-15 11:50
标题:
静态不能访问非静态,只能访问静态的问题。
我只是大致知道静态方法只能访问静态成员,不能访问非静态。被Static修饰的成员随着类的加载而加载,但是具体的原因还是不太清楚。请高手解释解释!!
作者:
邓斌
时间:
2012-4-15 12:06
被static 修饰的静态。优先于对象存在。随着类的加载而加载。
也就是说。static比对象先存在。就不必先创建对象了。被static修饰的可以直接被调用。在方法去区内共享。
作者:
邱俊杰
时间:
2012-4-15 12:08
好像这个没什么原因吧,是java的规则吧,你掌握就好了。
作者:
王德南
时间:
2012-4-15 12:12
首先static表示的是静态,当类中的方法或属性被static修饰之后就表示它属于类所拥有了,也就是static的东西会随着类的加载而加载,也就是随着类的产生而产生。之所以静态方法只能访问静态的成员是因为非静态的成员只有在对象产生之后才可以产生,对象比类后产生,当你用静态方法去访问非静态的成员时这些非静态的成员根本就没有产生,你就不可以访问到了?但静态的成员却随着类的加载就产生了,此时成员已经产生了,所以你就可以访问了。所以静态方法只能访问静态成员。
作者:
wang耀雨
时间:
2012-4-15 12:19
一句话说到底,被static修饰的任何成员直属于类,可以被类和对象调用,先有类再有对象
作者:
黑马老兵
时间:
2012-4-15 12:26
静态方法只能方法问静态同一个类中的静态方法,不能访问非静态方法。
如果要调用就通过创建对象调用。
举例如下:
class Demo
{
public static void main(String[] args)
{
int i = 1;
Demo dem = new Demo();//调用非静态的方法。
dem.test2(i);
test1();
}
public static void test1()
{
System.out.println("test1******");
}
public void test2(int i)
{
System.out.println("test2*****"+i);
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2