黑马程序员技术交流社区

标题: this [打印本页]

作者: 黑马-李勇    时间: 2012-6-28 13:06
标题: this
我笔记记乱了,“静态方法中可以定义this和super,静态方法中不可以出现this。”应该是什么啊?哪个对啊?
作者: 晁喆    时间: 2012-6-28 13:14
因为静态方法在该类加载进内存时就已经存在了,所以还没有创建该类的对象,不能使用this了。

作者: 黑马-唐磊    时间: 2012-6-28 13:15
本帖最后由 黑马-唐磊 于 2012-6-28 13:17 编辑

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

既然"无需本类的对象即可调用静态方法",而this和super关键字都是用于本类对象的-----调用静态方法无需本类的对象这句话很清楚表明:静态方法中不能用this和super关键字

作者: 常佳杰    时间: 2012-6-28 13:25
静态使用注意事项:
1.静态方法只能访问静态成员。非静态方法既可以访问静态也可以访问非静态
2.静态方法中不可以定义this,super关键字,因为静态优先于对象存在,所以静态方法中不可以出现this
super 就是超的意思,也就是表示父类


这个完整点
作者: 邵阳    时间: 2012-6-28 13:37
我来补充一下:
1:静态方法只能访问静态成员。
非静态方法既可以访问静态也可以访问非静态。
2:静态方法中不可以定义this,super关键字。
因为静态时优于对象存在的。所以静态方法不可以出现this、super关键字。
3:主函数是静态的。


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





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