黑马程序员技术交流社区
标题:
为什么静态方法中没有this?
[打印本页]
作者:
杨兴庭
时间:
2013-6-18 17:01
标题:
为什么静态方法中没有this?
本帖最后由 巩建 于 2013-6-18 21:12 编辑
今天自己遇到非常困惑的地方?静态方法不可以调用非静态方法,静态方法中没有this关键字,我一直把这个当做结论来记的,今天看到一个论坛里的一个帖子,他的入学面试时问到了,
静态方法可以调用非静态方
法?
吗我一想当然不可以,静态方法只能访问静态成员,不能访问非静态成员,静态方法不能调用非静态方法。我当时脑子里就是这么想的
但是静态方法不能调用非静态方法?
我又想到静态方法是类方法,静态方法中没有this,所以但是静态方法不能调用非静态方法。
但是静态方法中又为什么没有this?
this是个引用哪个对象调用方法就引用哪个对象,静态方法也可以被其他成员调用,那么为什么静态方法中没有this呢?我非常的迷惑
哪位哥么知道的?麻烦画个内存图帮忙解释下 ,老规矩30论坛金币感谢
作者:
shang1jk
时间:
2013-6-18 17:18
静态方法在是随着类的加载而加载的, 而类被加载的时候, 对象是还没有被建立的.
this是对象的引用, 对象还不存在的时候,就自然不能使用this.
作者:
薛淑凯
时间:
2013-6-18 17:20
很简单,this是指当前对象,而静态优先于对象存在,存储在方法区中,此时堆中还没有对象,所以在静态方法加载的时候就没有对象,何来的this
作者:
凉拌蒲公英
时间:
2013-6-18 17:23
静态方法不属于任何一个类的对象,那么既然对象都不属于了,那么我想请问你,this指向什么呢?你只看见可以用对象.静态方法,但你有没有想到用类名.静态方法呢,此时都没创建出对象,请问this指向谁?
作者:
世界公民
时间:
2013-6-18 18:26
this是指当前对象,因为调用静态方法时是不需要实例对象的所以也就不会存在this了。
作者:
姚志远
时间:
2013-6-18 19:55
因为非static方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用
而static方法调用时不需要创建对象,可以直接调用。也就是说,当一个static方法被调用时,可能还没有创建任何实例对象
如果从一个static方法中发出对非static方法的调用,那个非static方法是关联到哪个对象上的呢?这个逻辑无法成立,所以,一个static方法内部发出对非static方法的调用。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2