黑马程序员技术交流社区

标题: 面相对象的this,什么时候用啊。为什么在静态类中不可以用 [打印本页]

作者: 337091921    时间: 2013-4-26 21:05
标题: 面相对象的this,什么时候用啊。为什么在静态类中不可以用
求详解啊,解释一下对象
作者: HM汪磊    时间: 2013-4-26 21:10
静态类随着类的加载而加载,先于对象存在,而this是调用对象,你想想这种逻辑对吗???。。。当然就不可以用啦
作者: 张迁    时间: 2013-4-26 21:31
因为this是个引用,哪个对象调用方法就引用哪个对象。 而静态方法有可能不是被对象调用的,this无从引用。
作者: 殇_心。    时间: 2013-4-26 21:33
本帖最后由 殇_心。 于 2013-4-27 08:25 编辑

this关键字:代表本类对象,代表它所在函数所属对象的引用
            哪个对象在调用this所在的函数,就代表哪个对象
静态方法随着类的加载而加载,先于对象存在。
所以this是不可能出现在静态方法中的。
差点被误解了。。
static是不能修饰类的(除内部类在成员位置上)。 只能修饰成员变量或成员函数。
作者: 侯天进    时间: 2013-4-26 21:35
this是对象的专用关键字,指的是当前对象的引用。我们要使用对象肯定是现有类才能使用对象,而静态类是随着类的加载而加载,且在对象创建之前加载,所以你在静态类中是使用不了this的,静态前,对象后,你让一个已经存在的东西去调用一个还没来得及创建的东西,是肯定不行的,就好像有人给你西瓜,但是西瓜都还没在你手上,你吃什么?
作者: 李瑞    时间: 2013-4-26 22:22
this相当于当前对象的一个指针,静态方法随着类的加载而加载,先于对象,所以this不可能存在
作者: breeze    时间: 2013-4-26 22:26
this指的是某个对象, 静态方法和静态内部类是在类加载的时候就随之创建的, 在类对象创建之前就存在的, 当在类内遇到同名的局部属性, 为了区分类属性和局部的, 这时候用this.成员属性, 用于区分成员和局部
作者: 曾德强    时间: 2013-4-26 22:42
比如说:
public class A
{
int a;
int b;
A(int a,int b){
this.a=a;
this.b=b;
}
}
注意两个a或b是不一样的
作者: sos3542    时间: 2013-4-27 16:32
本帖最后由 sos3542 于 2013-4-27 16:35 编辑

this指的是本身~~谁调用this就会指向谁~
this只在成员变量重名时候使用。
静态方法随着类的加载而加载,先于对象存在~
作者: 王怀亮    时间: 2013-4-27 17:00
以下几楼的学员已经回答的很详细,如果感觉没有问题了,麻烦把帖子改为“已解决”
作者: 海不扬波    时间: 2013-4-27 17:17
this:代表对象,就是所在函数所属对象的引用。
在定义功能时,该功能内部使用到了该功能的对象,这时就用this来表示这个对象。
this还可以用于构造函数间的调用。
调用格式:this(实际参数);
this对象后面跟上.  调用的是成员属性和成员方法(一般方法)
this对象后面跟上() 调用的是本类中的对应参数的构造函数
注意:用this调用构造函数,必须定义在构造函数的第一行。因为构造函数是用于初始化的,所以初始化动作一定要执行。否则编译失败
静态方法中不能使用this,super关键字。
因为this代表对象,而静态在时,有可能没有对象,所以this无法使用。





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