A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王--明 黑马帝   /  2012-2-28 12:59  /  3480 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

静态方法中不仅不能出现this关键字,而且也不能出现super关键字
this和super是需要对象调用,静态方法是属于类的,没有实例化对象.如果用了this和super所指向的是哪一个对象呢?没有对象所指向.所以静态方法中是不能出现this和super两个关键字的.
回复 使用道具 举报
本帖最后由 王--明 于 2012-2-28 13:00 编辑

如题,这个有点小困惑,在静态方法中为什么不能出现this关键字。

评分

参与人数 1技术分 +1 黑马币 +2 收起 理由
杨盼 + 1 + 2 赞一个!

查看全部评分

9 个回复

倒序浏览
你先理解this是什么,然后理解静态方法与非静态方法的区别,然后你大概能理解为什么不能调用了。

this是指当前对象,静态方法是通过类调用的方法,不需要实例化,既然不需要实例化,就没有当前对象,既然没有当前对象那怎么会有this呢?

评分

参与人数 1黑马币 +3 收起 理由
杨盼 + 3

查看全部评分

回复 使用道具 举报
静态方法在该类加载进内存时就已经存在了,这时可能还没有创建该类的对象,所以不能使用this
回复 使用道具 举报
this 是针对对象实例出现
回复 使用道具 举报
当stack 修饰类变量时候  当类刚开始初始化  ,stack代码块中的 代码就运行了,  可是还没有 对 对象初始化 压根就没对象  ,this是指向的 调用对象,对象都没有呢,this 就出来了 这个不合乎逻辑,
回复 使用道具 举报
Static方法是类方法,先于任何的实例(对象)存在。即Static方法在类加载时就已经存在了,但是对象是在创建时才在内存中生成。而this指代的是当前的对象。静态方法应该就是不需要定义类的对象就可以直接使用的,而this表示调用这个方法的对象,两个同时使用就矛盾了,静态方法被调用的时候是不存在类的对象的
回复 使用道具 举报
葛尧 中级黑马 2012-2-28 14:58:18
8#
this是对象,在对象没创建时,堆栈中是没指定数据给你引用的。。
引用一个未知的内存地址,在C中是危险的,
在java中就非法了吧。。个人理解
回复 使用道具 举报
沈样 黑马帝 2012-2-28 15:08:40
9#
this调用当前类,static先于类,就不能调用了
回复 使用道具 举报
因为 静态方法 优先于 对象存在, 当静态出现时 它会在 方法区开辟一块内存 此时 对象还没有建立, 对象都没何来 this? (this是指所属对象的引用)
同理 静态方法只能调用 静态,不能调用非静态
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马