黑马程序员技术交流社区
标题:
关于静态的问题
[打印本页]
作者:
yangchao8907
时间:
2013-7-30 11:56
标题:
关于静态的问题
本帖最后由 杨兴庭 于 2013-7-30 18:18 编辑
看完毕老师的视频,有个例子有点儿问题绕不过来
<p>class Person
{
String name;</p><p> public static void show()
{
System.out.println(name+"haha");
}
}</p><p>class PersonDemo
{
public static void main(String[] args)
{
//第一种方式:
Person p = new Person();
p.show();
//第二种方式:
//Person.show();
}
}</p>
复制代码
为什么第一种方式,实例化对象,然后调用show()方法,报错呀?而第二种方式就可以。
作者:
HMHM汪磊
时间:
2013-7-30 12:01
你定义的name属性不是静态的啊,静态方法访问外部非静态成员当然报错了啊
作者:
a2213502
时间:
2013-7-30 12:07
你定义的方法show()是静态的,不能用对象调用
static 用法:是一个修饰符,用于修饰成员(成员变量,成员函数) 当成员被静态修饰后,就多了一个调用方式,出来可以被对象调用外 还可以直接被类名调用,格式为:类名.静态成员。
作者:
yangchao8907
时间:
2013-7-30 12:12
class Person
{
String name;
public static void show()
{
System.out.println(name+"haha");
}
}
class PersonDemo
{
public static void main(String[] args)
{
//第一种方式:
Person p = new Person();
p.show();
//第二种方式:
//Person.show();
}
}
复制代码
重新把代码粘一下,
作者:
王丽达
时间:
2013-7-30 12:21
本帖最后由 王丽达 于 2013-7-30 12:32 编辑
静态方法show()想要调用,有两种方式:
1.被静态方法调用,像主函数就是静态的,就可以调用。
2.静态方法被所在类类名调用。
你得把变量name也定义成静态,name默认是null。自己测试下
作者:
王希军
时间:
2013-7-30 13:58
无法从静态上下文中引用非静态 变量 name
作者:
Mr_Free
时间:
2013-7-30 14:59
本帖最后由 Mr_Free 于 2013-7-30 15:01 编辑
发错地方了
作者:
以防万一
时间:
2013-7-30 19:10
class Person
{
static String name;//应该加上static修饰符,用于修饰成员变量或者成员函数
public static void show()
{
System.out.println(name+"haha");
}
}
class PersonDemo
{
public static void main(String[] args)
{
//第一种方式:
Person p = new Person();
p.show();
//第二种方式:
// Person.show();
}
}
复制代码
当成员被静态修饰后,就多了一个调用方式,除了可以被对象调用外,还可以直接被类名调用,格式为:类名.静态成员
静态方法只能访问静态成员,其中也不可定义this,super关键字
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2