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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马-李勇 中级黑马   /  2012-6-28 13:06  /  1493 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我笔记记乱了,“静态方法中可以定义this和super,静态方法中不可以出现this。”应该是什么啊?哪个对啊?

5 个回复

倒序浏览
因为静态方法在该类加载进内存时就已经存在了,所以还没有创建该类的对象,不能使用this了。
回复 使用道具 举报
本帖最后由 黑马-唐磊 于 2012-6-28 13:17 编辑

  静态方法不能定义this和super。静态方法可以直接通过类名调用,任何的实例也都可以调用,因此静态方法中不能用this和super关键字,不能直接访问所属类的实例变量和实例方法(就是不带static的成员变量和成员成员方法),只能访问所属类的静态成员变量和成员方法。因为实例成员与特定的对象关联! static方法独立于任何实例,因此static方法必须被实现,而不能是抽象的abstract。静态方法是存放在内存中的数据段里,this和super调用的是堆空间里的应用对象不能调用数据段区域里的数据,因此静态方法中不能用this和super关键字
回复 使用道具 举报
在一个类中定义一个方法为static,则为静态方法,那就是说,无需本类的对象即可调用此方法,调用一个静态方法就是“类名.方法名”

既然"无需本类的对象即可调用静态方法",而this和super关键字都是用于本类对象的-----调用静态方法无需本类的对象这句话很清楚表明:静态方法中不能用this和super关键字
回复 使用道具 举报
静态使用注意事项:
1.静态方法只能访问静态成员。非静态方法既可以访问静态也可以访问非静态
2.静态方法中不可以定义this,super关键字,因为静态优先于对象存在,所以静态方法中不可以出现this
super 就是超的意思,也就是表示父类


这个完整点
回复 使用道具 举报
我来补充一下:
1:静态方法只能访问静态成员。
非静态方法既可以访问静态也可以访问非静态。
2:静态方法中不可以定义this,super关键字。
因为静态时优于对象存在的。所以静态方法不可以出现this、super关键字。
3:主函数是静态的。


另说一下static的特点你就更明白
1:随着类的加载而加载。
也就是说:静态会随着类的消失而消失,说明他的生命周期最长。
2:优先于对象存在。
明确一点:静态时先存在的,对象是后存在的。
3:被所有对象所共享。
4可以被类名直接调用。

评分

参与人数 1技术分 +1 收起 理由
刘蕴学 + 1

查看全部评分

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