黑马程序员技术交流社区

标题: 静态方法中为什么不能用This? [打印本页]

作者: 百思不得7哥    时间: 2015-5-7 20:44
标题: 静态方法中为什么不能用This?
麻烦解释下,详细点。。
作者: hufu4635    时间: 2015-5-7 20:50
1.静态方法随着类的加载而加载,静态方法是优先于对象而存在的。2.当我们加载一个类的时候,对象还没有存在,而this或super代表的是对象的引用,试问当我们加载类的时候对象都没有,又怎么可以使用this或者super呢?答案显而易见
作者: 电子生命体    时间: 2015-5-7 20:50
静态方法随着类的加载而加载 优先于对象的存在
this代表的是调用这个方法的对象

静态方法可以被类名直接调用 而这时对象又没有创建。方法中的this就会报错。
作者: 雪风飞花    时间: 2015-5-7 21:01
因为static修饰的方法首先在方法区中与main方法同时存在了是随着类的加载而加载的,this要等到你在方法中创建对象,调用对象成员时才可以使用,你要是在static修饰的方法中用this,前后顺序互相矛盾了
作者: 我爱吃橙子    时间: 2015-5-7 21:11
this是指本类对象的调用,而静态方法是跟随类的,在对象new之前就已经存在于内存中了!
作者: 程梦真    时间: 2015-5-7 21:15
..........................
作者: 我干阿衰    时间: 2015-5-7 21:29
静态的函数在类加载的时候就已经存在了。而此时内存中还没有对象。this指的就是当前对象。对象都没有,当然会报错了。




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