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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 聂玉林 中级黑马   /  2012-6-20 13:41  /  2999 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在静态成员实现中使用This关键字,为什么会产生编译器错误??求解释

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

7 个回复

倒序浏览
this关键字在类中使用,是对当前实例的引用
因为静态成员不是实例的一部分,所以不能在任何静态函数成员的代码中使用this关键字

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
目前在静态函数里面,没有this的概念,所以在静态成员实现中使用This关键字会产生编译器错误。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
在静态方法中是不能使用this预定义对象引用的,即使其后边所操作的也是静态成员也不行.
因为this代表的是调用这个函数的对象的引用,而静态方法是属于类的,不属于对象,静态方法成功加载后,对象还不一定存在

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
静态成员属于类,每一个类的实例都是这一份一样的静态成员,一改全改
而this表示当前类的实例引用,属于this这一个具体实例
当你在静态方法中this的时候,很明显,静态方法要求的是所有实例,而this只是当前实例,一对多,叫编译器无所适从

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
静态方法里只能“容纳”类方法和类变量,即静态方法里只能调用静态方法、只能使用静态属性;不能调用实例方法、使用实例变量。
因为this关键字是针对于对象的,所以当然不能在静态方法里面使用了!

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
金龙 中级黑马 2012-6-21 21:26:48
7#
这是一个先后顺序的问题,首先,静态只能调用静态,为什么?因为静态修饰的内容是随着类走的,它随着类的加载而加载,而this呢?它代表的是本类对象的引用,而对象是只有你在创建的时候才会存在,这么说 创建对象,类肯定是先进内存的,静态是随着类进  ,静态也进内存了,而对象却一定是后进内存的,这就是所谓的先来的不能访问后来的,因为静态是先存在的嘛,电脑也不能未卜先知的,在面向对象之后,个人认为,对于内存要有一个清晰的认识,一段代码,在内存中是如何体现的要搞懂,弄懂了内存,很多问题自己就可以推理出来,区区拙见,你我共勉,我也刚学到面向对象这里,加油吧兄弟!

评分

参与人数 1技术分 +2 收起 理由
宋天琪 + 2

查看全部评分

回复 使用道具 举报
静态成员是不需要实例化就可以直接调用的。而this关键字是针对实例的。静态成员不需要实例,既然不需要实例化,那么用this访问是不合理的

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马