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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 二月的雨 中级黑马   /  2014-11-22 21:07  /  889 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

java "静态的方法不能存取“this”所引用的对象。"该怎么理解这句话呢?是静态的方法不能引用“this”所引用的对象吗?

7 个回复

倒序浏览
this代表当前对象。而静态方法是通过类名加点调用,不用创建对象就可以使用,所有在使用静态方法的时候可以不存在当前对象,所有不能使用this。
回复 使用道具 举报
this代表当前对象。静态方法在内存中是优先于对象存在的,在加载类文件后静态方法就存在了,而对象的要在调用new来创建时才开辟内存的空间,也就是这是this引用才存在,所以静态的方法不能存取“this”所引用的对象
回复 使用道具 举报
this 代表者当前对象
静态方法可以被类名所调用如:
Person.say();
假设静态方法里有this存在。那么this现在就没有指向任何对象,方法还调用它,肯定出错。
回复 使用道具 举报
静态方法中不能使用this调用对象
回复 使用道具 举报
cbb 中级黑马 2014-11-23 09:04:15
地板
因为静态是先存在的。
回复 使用道具 举报
static修饰的方法是随着类的加载而加载,再类加载的时候,还没有创建对象,,this在静态方法中存在的话,就表示该类已经存在对象了。
回复 使用道具 举报
首先你要明白对象和类的区别。
this是属于对象范畴的东西,而静态方法是属于类范畴的东西
所有的成员方法,都有一个默认的的参数this(即使是无参的方法),只要是成员方法,编译器就会给你加上this这个参数
而静态方法与对象无关,根本不能把对象的引用传到方法中,所以不能用this
在一个类中定义一个方法为static,则为静态方法,那就是说,无需本类的对象即可调用此方法,调用一个静态方法就是“类名.方法名”
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马