一个创建对象的调用方法的问题

来源:百度知道 编辑:UC知道 时间:2024/06/05 06:41:13
class Test
{
public static void main(String[] args)
{
Queue q=new Queue();
Producer p=new Producer(q);
Consumer c=new Consumer(q);
p.start();
c.start();
}
}

class Producer extends Thread
{

Queue q; //
Producer(Queue q)//这里为什么会与语句
{ //Queue q=new Queue();
this.q=q; //一样呢 向下看
} //
public void run()

{
for(int i=0;i<10;i++)
{
q.put(i); //上边没有创建对象q,方法q.put(i);也能正常使用是为什么?
System.out.println("Producer put "+i);
}
}

}
class Consumer extends Thread
{
Queue q; //
Consumer(Queue q)//还有这里
{ //
this.q=q; //
} //
public void run()
{
while(true)
{
System.out.println("Consumer get "+q.get());
}
}
}
class Queue
{
int value;
public void put (

问题很简单,你注意看一下你的第一个类;你会发现你已经创建了一个Queue q=new Queue(); 然后又把q给传入对象p,c;即Producer p=new Producer(q);
Consumer c=new Consumer(q);所以在后面两个类中的对象是同一个对象;所以不用创建对象q;明白了吗?有疑问再来问我.

class Test
{
public static void main(String[] args)
{
Queue q=new Queue(); //已经创建了
Producer p=new Producer(q);
Consumer c=new Consumer(q);
p.start();
c.start();
}
}

Producer(Queue q)//这里为什么会与语句
{ //Queue q=new Queue();
this.q=q; //一样呢 向下看
}
这是他的构造方法 参数是Queue的对象
q.put(i); //上边没有创建对象q,方法q.put(i);也能正常使用是为什么?

q是Queue的对象 具备这个方法 在哪里都可以用