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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

请大神们给解惑啊!!!

12 个回复

倒序浏览
因为静态引用的对象也必须是静态
回复 使用道具 举报
聪明叉 发表于 2014-11-14 22:27
因为静态引用的对象也必须是静态

听过静态变量和静态方法,这个静态对象是什么东东???
回复 使用道具 举报
因为静态方法储存在方法区,优先于对象存在
回复 使用道具 举报
学习!!11
回复 使用道具 举报
static特点:
1,被static修饰会随着类的加载而加载,随着类的消失而消失。生命周期长。
2,静态优先于的对象存在,所以静态方法中不可以定义this,super关键字。
3,被所有对象所共享。
4,可以直接被类名所调用。
回复 使用道具 举报
加油 来自手机 中级黑马 2014-11-15 00:23:43
7#
因为静态不能调用非静态方法,静态比对象先进内存
回复 使用道具 举报
Sxxjava 中级黑马 2014-11-15 01:29:43
8#
因为静态是类一进内存就有了,那个时候你非静态的都还没有呢,怎么可能调用呢
回复 使用道具 举报
DamonZh 来自手机 中级黑马 2014-11-15 08:25:58
9#
因为静态的内容在加载类时就已经存在 而super是对象的引用 所以可能不存在
回复 使用道具 举报
super代表对父类对象的引用,指向父类对象;因为静态优先于对象存在,所以方法被静态修饰之后方法先存在,方法里面用super指向的是父类对象,但是所需的父类引用对象晚于该方法出现,也就是super所指向的对象没有,当然就会出错。也可以理解为静态方法是在栈内存里随着类的加载就存在,super调用的是堆内存里的应用对象,不是调用栈内存里的,此时堆内存里的对象还没有,因此静态方法中不能用super关键字
回复 使用道具 举报
rel4x 发表于 2014-11-14 22:45
因为静态方法储存在方法区,优先于对象存在

这位大哥说得太对了
回复 使用道具 举报
rel4x 发表于 2014-11-14 22:45
因为静态方法储存在方法区,优先于对象存在

这位大哥说得太对了
回复 使用道具 举报
静态方法是在方法区中的静态方法区中,和栈不一样,整个程序运行时,如果调用哪个方法,会将那个方法从方法区中进栈。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马