黑马程序员技术交流社区

标题: ipursue_静态方法只能访问静态之理解! [打印本页]

作者: ipursue    时间: 2016-3-13 12:24
标题: ipursue_静态方法只能访问静态之理解!
在黑马已经学习完了面向对象的内容,最近进行了一下总结。
静态只能访问静态,非静态都可以访问,这是我们听到的一个结论。
那么,静态为什么不能访问非静态,我在mian方法里不是访问了很多对象吗,main方法就是静态的。
其实,静态可以间接的访问对象的成员:
static void setName(String name) {
           Person p = new Person();
           p.name = name;
}
这样做是可以的,可以在静态方法内访问对象的非静态属性。但是为什么老师说不可以呢?
答案是:这样的访问没有任何意义,只有当这个静态方法进栈运行的时候,才会创建这个对象p,然后设置了一下p对象的属性,
              这时候方法弹栈,刚才的对象消失不见,没有任何价值,仅存在着这么一下。

下面再看非静态方法和这个有什么区别?
Person p = new Person();
p.setName(String name);
非静态方法访问的是  “已经存在” 的对象,方法运行完弹栈后,该对象还存在,还有价值,该方法仅仅是修改了一下。
结论:
可以这样理解:静态方法可以间接的访问对象的属性,但是无法访问已经存在的对象,导致访问没有任何意义。

作者: ipursue    时间: 2016-3-13 12:25
欢迎大家一块儿交流。{:2_30:}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2