黑马程序员技术交流社区

标题: 弱弱的问一句 this.res = res; 有什么用,我是学渣,请指教。 [打印本页]

作者: 古都旧城    时间: 2014-12-6 17:35
标题: 弱弱的问一句 this.res = res; 有什么用,我是学渣,请指教。
class Resource
{
       
}

class Producer implements Runnable
{
        private Resource res;

        Producer(Resource res)
        {
                this.res = res;
        }
}

class Consumer implements Runnable
{
        private Resource res;

        Consumer(Resource res)
        {
                this.res = res;
        }

}


class ProducerConsumerDemo
{
        public static void main(String[] args)
        {
                Resource r = new Resource();

                Producer pro = new Producer(r);
                Consumer con = new Consumer(r);

                Thread t1 = new Thread(pro);
                Thread t2 = new Thread(con);

                t1.start();
                t2.start();
        }
}

以上是缩减版程序

弱弱的问一句 this.res = res; 有什么用,我是学渣,见笑了。
作者: 清诗纪事    时间: 2014-12-6 17:55
就是赋值操作,this代表的是对象,就是把变量res的值赋给当前对象
作者: 古都旧城    时间: 2014-12-6 18:27
清诗纪事 发表于 2014-12-6 17:55
就是赋值操作,this代表的是对象,就是把变量res的值赋给当前对象

可是,这个变量是对象型的啊,相当于this.对象=对象 这是啥意思呢
作者: as604049322    时间: 2014-12-6 19:01
好好看面对对象吧,多看几遍。这个东西只可意会不可言传
作者: wangcongwu    时间: 2014-12-6 19:34
每一个consumer的意思就是一个消费者,消费者要消耗一些原材料(resource),但是你的resource进去了,必须要让消费者接受这个材料,this.res = res 的意思就是给你的材料变成了你自己的材料
作者: 曛丨黯淡浮华    时间: 2014-12-6 19:39
this ,  就是当前类对象 ,

假设你这个类是叫 Test ,  this就是就是Test


作者: Rdw    时间: 2014-12-6 19:48
this.res, 指的是全局变量,及代表的是Producer.res。而res代表的是该方法的参数,这个this.res=res;是一个赋值操作。即把参数值赋值给对象
作者: 清诗纪事    时间: 2014-12-6 19:59
古都旧城 发表于 2014-12-6 18:27
可是,这个变量是对象型的啊,相当于this.对象=对象 这是啥意思呢

this.name指的是当前对象的name,等号后边那个name是参数列表中的name
作者: 杨金龙    时间: 2014-12-6 20:02
this代表它所属对象的引用
作者: 杨金龙    时间: 2014-12-6 20:12
this代表它所属对象的引用
简单说:那个对象调用this所在的函数,this就代表那个对象
谁调用了那个方法(函数),this就是谁
class Producer implements Runnable
{
         private Resource res;

         Producer(Resource res)
         {
                 this.res = res;
         }
}

class ProducerConsumerDemo
{
         public static void main(String[] args)
         {
                 Resource r = new Resource();

                 Producer pro = new Producer(r);
                 Consumer con = new Consumer(r);

                 Thread t1 = new Thread(pro);
                 Thread t2 = new Thread(con);

                 t1.start();
                 t2.start();
         }
}

Producer pro = new Producer(r);
这句话的意思是实例化一个Producer对象, 对象名叫pro,并把r对象当作参数传递给构造函数
这时,pro就是构造函数的调用者,this就是指pro
这样写你应该看地懂
this.res = res; 可以看成
pro.res =res;  

编程别这样写。我只是告诉你两者关系


作者: 古都旧城    时间: 2014-12-19 23:46
wangcongwu 发表于 2014-12-6 19:34
每一个consumer的意思就是一个消费者,消费者要消耗一些原材料(resource),但是你的resource进去了,必须 ...

谢谢。。。。。。。。。。。
作者: 牧歌    时间: 2014-12-19 23:56
this不是代表当前调用这个属性的对象么?
作者: 青衫禅客    时间: 2014-12-20 00:56
this代表的是本类对象的引用,区别于super代表父类,这个在子父类中需要仔细理解
作者: 郭文飞    时间: 2014-12-20 01:08
this.res = res   给this代表的对象的资源 赋初值res  。。
作者: king——    时间: 2014-12-20 01:39
这里一转,好有收获啊




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