黑马程序员技术交流社区
标题:
静态static 问题
[打印本页]
作者:
HM何伟
时间:
2013-3-25 21:10
标题:
静态static 问题
请问一下,这段代码为什么编绎会失败啊?
有什么方法可以访问到method方法中的name?
class StaticTest{
String name="张三";
static String s="李四";
void function()
{
System.out.println(name);
System.out.println(s);
}
static void method()
{
System.out.println(StaticTest.name);
System.out.println(s);
}
}
class StaticTestDemo{
public static void main(String[] args){
StaticTest t=new StaticTest();
t.function();
StaticTest.method();
}
}
复制代码
作者:
魏福伟
时间:
2013-3-25 21:39
System.out.println(StaticTest.name);
name属性不是static的不能通过类名访问,只能通过对象才能访问
而s是静态的,可以通过类名访问,也可以通过对象访问,推荐通过类名访问
作者:
桉树
时间:
2013-3-25 22:00
在静态的方法中是不能访问非静态的属性的。
而且非静态方法和属性必须创建类才能访问的。
{:soso_e128:}
作者:
HM何伟
时间:
2013-3-25 23:09
有什么方法可以访问到method中的那个name么?请把代码,呈上
作者:
李游
时间:
2013-3-27 00:04
class StaticTest{
String name="张三";
static String s="李四";
void function()
{
System.out.println(getName());
System.out.println(s);
}
static void method()
{
System.out.println(new StaticTest().getName());
System.out.println(s);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class StaticTestDemo{
public static void main(String[] args){
StaticTest t=new StaticTest();
t.function();
StaticTest.method();
}
}
复制代码
1、建议给非静态属性都添加get和set方法,当访问属性是都通过其get或者set方法去设置和访问
2、建议不要在静态区去访问非静态属性
作者:
刘胜寒
时间:
2013-3-27 09:27
method();方法是被静态修饰的,所以只能访问被静态修饰的的变量,这一点在毕老师的java25天基础视频里面有说过。非常建议楼主采用kongbei 的第一种方法,第二中是静态方法好像只能访问被静态修饰的变量;
作者:
程宁宁
时间:
2013-3-27 12:01
你把name属性 设置为static就可以了.
原因:
非静态属性是不能用类名直接访问的.而需要具体的实例才可以调用.
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2