黑马程序员技术交流社区

标题: 在静态方法中为什么不能出现this关键字。 [打印本页]

作者: 王--明    时间: 2012-2-28 12:59
标题: 在静态方法中为什么不能出现this关键字。
本帖最后由 王--明 于 2012-2-28 13:00 编辑

如题,这个有点小困惑,在静态方法中为什么不能出现this关键字。
作者: 张开开    时间: 2012-2-28 13:06
你先理解this是什么,然后理解静态方法与非静态方法的区别,然后你大概能理解为什么不能调用了。

this是指当前对象,静态方法是通过类调用的方法,不需要实例化,既然不需要实例化,就没有当前对象,既然没有当前对象那怎么会有this呢?
作者: 冯兵兵    时间: 2012-2-28 13:06
静态方法在该类加载进内存时就已经存在了,这时可能还没有创建该类的对象,所以不能使用this
作者: 唐学松    时间: 2012-2-28 13:23
this 是针对对象实例出现
作者: djx900    时间: 2012-2-28 13:48
当stack 修饰类变量时候  当类刚开始初始化  ,stack代码块中的 代码就运行了,  可是还没有 对 对象初始化 压根就没对象  ,this是指向的 调用对象,对象都没有呢,this 就出来了 这个不合乎逻辑,
作者: 王康    时间: 2012-2-28 13:56
静态方法中不仅不能出现this关键字,而且也不能出现super关键字
this和super是需要对象调用,静态方法是属于类的,没有实例化对象.如果用了this和super所指向的是哪一个对象呢?没有对象所指向.所以静态方法中是不能出现this和super两个关键字的.

作者: 熊玖帅    时间: 2012-2-28 14:39
Static方法是类方法,先于任何的实例(对象)存在。即Static方法在类加载时就已经存在了,但是对象是在创建时才在内存中生成。而this指代的是当前的对象。静态方法应该就是不需要定义类的对象就可以直接使用的,而this表示调用这个方法的对象,两个同时使用就矛盾了,静态方法被调用的时候是不存在类的对象的
作者: 葛尧    时间: 2012-2-28 14:58
this是对象,在对象没创建时,堆栈中是没指定数据给你引用的。。
引用一个未知的内存地址,在C中是危险的,
在java中就非法了吧。。个人理解
作者: 沈样    时间: 2012-2-28 15:08
this调用当前类,static先于类,就不能调用了
作者: 骆龙    时间: 2012-2-28 16:05
因为 静态方法 优先于 对象存在, 当静态出现时 它会在 方法区开辟一块内存 此时 对象还没有建立, 对象都没何来 this? (this是指所属对象的引用)
同理 静态方法只能调用 静态,不能调用非静态




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