黑马程序员技术交流社区
标题:
关于静态Static的一点疑问
[打印本页]
作者:
杜天伟
时间:
2012-12-14 11:22
标题:
关于静态Static的一点疑问
静态方法只能访问静态成员。
非静态方法既可以访问静态也可以访问非静态。
这是Static的 规则
我有点疑问的是,要是先建立了对象 ,那么这时候非静态的也就有了初始化值,那么这时候静态方法可以访问非静态成员了嘛?
在第六天的第一个视频最后,有个同学也问了这个问题,毕老师回答,必须的!
但 ,我按照这个编码 。结果却编译不通过 {:soso_e136:}
StaticDemo.java:50: 错误: 无法从静态上下文中引用非静态 变量 name
System.out.println("::::"+name);
^
1 个错误
这是什么情况?
上代码
class Person
{
String name;//成员变量,实例变量。
static String country = "CN";//静态的成员变量,类变量。
public static void show()
{
System.out.println("::::"+name);
//this.haha();
}
//public void haha()
//{}
}
class StaticDemo
{
public static void main(String[] args)
{
Person p = new Person();
//p.name = "zhangsan";
//p.show();
//System.out.println(p.country);
//System.out.println(Person.country);
p.show();
}
}
作者:
蔡汉康
时间:
2012-12-14 11:39
被Static静态修饰的属性或方法,可以直接使用类名调用(类名.属性/类名.方法())
#注意:使用static方法,不能调用非static的属性或方法
#原因:因为static属性或方法可以在对象没有实例化的时候就直接调用了.
作者:
马铿
时间:
2012-12-14 11:55
System.out.println("::::"+new Person().name);改成这样就对了
因为public static void show()这里头你调用name,而这个name是不是静态的,需要有Person这个对象
所以会出错
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2