黑马程序员技术交流社区
标题:
静态方法中为什么不能出现 super关键字?
[打印本页]
作者:
余海龙
时间:
2012-1-10 20:06
标题:
静态方法中为什么不能出现 super关键字?
本帖最后由 余海龙 于 2012-2-2 13:40 编辑
学哥学姐们,帮我解决一下这个问题吧,尽量讲的具体点儿,谢谢!{:soso_e183:}
作者:
李建平
时间:
2012-1-10 20:27
静态方法是不用创建对象实例就可能通过类名直接访问的"类名.方法名",super 和 this 都是针对对象实例的.
作者:
刘明瑞
时间:
2012-1-10 20:54
SUPER是孩子去找父母,但是连孩子都不存在,你怎么去找父母。
作者:
刘小峰
时间:
2012-1-10 21:00
静态方法它不属于单独的某个对象,他只和类有联系,也就是说静态方法成功加载后,对象还不一定存在,而super关键字它指的是当前对象的引用,所以在静态方法中不能出现super关键字
作者:
小白
时间:
2012-1-11 09:26
super:是操作当前此对象的父类中的对象,而静态方法是和整个类有关,和对象没有关系!
作者:
代臣
时间:
2012-1-11 12:28
本帖最后由 代臣 于 2012-1-11 12:36 编辑
在问题之前先讲super的用法:
1.super的用法跟this类似,this代表对本类对象的引用,指向本类已经创建的对象;而super代表对父类对象的引用,指向父类对象;
2.静态优先于对象存在;
3.由上面的1.和2.知:
因为静态优先于对象存在,所以方法被静态修饰之后方法先存在,而方法里面要用到super指向的父类对象,但是所需的父类引用对象晚于该方法出现,也就是super所指向的对象没有,当然就会出错。
综上,静态方法中不可以出现super关键字。
作者:
zl918
时间:
2012-1-11 12:50
首先你要明白对象和类的区别。
this和super是属于对象范畴的东西,而静态方法是属于类范畴的东西
所有的成员方法,都有一个默认的的参数this(即使是无参的方法),只要是成员方法,编译器就会给你加上this这个参数如:
Class A中
void method1(){}实际上是这样的--------> void method1(A this)
void method2(int x){}实际上是这样的--------> void method2(A this, int x)
而静态方法与对象无关,根本不能把对象的引用传到方法中,所以不能用this
作者:
王杰
时间:
2012-1-11 13:20
因为super与当前的对象有关。。。
作者:
大梅
时间:
2012-1-11 13:26
static修饰成分是优先于对象存在的,而this跟super是相对于对象而存在的。
作者:
曾辉
时间:
2012-1-12 13:59
静态方法方法属于类里面只能调用静态方法
this和super调用的都是对象的普通方法,估不能出现在静态方法中
this和super是需要对象才可以调用的,静态方法是属于类的,没有实例化的对象
作者:
余海龙
时间:
2012-1-12 19:14
看了各位的分析,已经明白了,谢谢!super指向父类对象,而静态优先于对象存在。{:soso_e183:}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2