A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 山水游客 中级黑马   /  2012-6-27 11:26  /  1934 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 孙胜录 于 2012-6-27 14:35 编辑

class Res
{
String name;
String sex;
boolean flag = false;
}

class Input implements Runnable
{
private Res r ;
Input(Res r)
{
this.r = r;
}
public void run()
{
int x = 0;
while(true)
{
synchronized(r)
{

if(r.flag)
try{r.wait();}catch(Exception e){}
if(x==0)
{
r.name="mike";
r.sex="man";
}
else
{
r.name="丽丽";
r.sex = "女女女女女";
}
x = (x+1)%2;
r.flag = true;
r.notify();
}
}
}
}

class Output implements Runnable
{
private Res r ;

Output(Res r)
{
this.r = r;
}
public void run()
{
while(true)
{
synchronized(r)
{
if(!r.flag)
try{r.wait();}catch(Exception e){}
System.out.println(r.name+"...."+r.sex);
r.flag = false;
r.notify();
}
}
}
}


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

Input in = new Input(r);
Output out = new Output(r);

Thread t1 = new Thread(in);
Thread t2 = new Thread(out);

t1.start();
t2.start();
}
}
private Res r ;
这句话什么意思呢 为什么要加private 还有 Res不是类吗 为什么不这样写 Res r =new Res() 还有
Input(Res r)
{
this.r = r;
}
这个不是构造方法吗 其中Res r 什么意思 啊

4 个回复

倒序浏览
Res是自定义类,private Res r是声明一个私有的Res变量,只是在内存中有个指向Res类的地址。r这时不是对象,也没有引用对象,当r=new Res()或者赋值之后才是Res对象。Input(Res r)
{
this.r = r;
}是Input类的自定义构造方法,Res r是定义构造方法的参数。

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 鼓励下!

查看全部评分

回复 使用道具 举报
private Res r ;
private:private表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用,JAVA是面向对象的一门语言,每个对象都有各自的属性和方法.但是有的属性涉及安全因素或秘密因素不能让外面的程序调用,所以就用到了private,
经过它定义的变量只能在此对象内部调用,外部程序就无法调用,也就是说只能供其自身调用,比如某个人是一个对象,那么他的血液就肯定是私有变量,只能供其自身调用来维持人的状态.而如果将血液定义成public(公共的)的话,随便其他人都可以改变他血液的状态,你随便把他的血液值设为逆流,那他不就挂了.

而Res是一个类,在这个程序里是一个资源类,类似人体的血液,不希望被其他外部程序直接访问和改变,要想访问或设置,只能用该类自己的方法.

Input(Res r)//其中 Res r 是该构造方法初始化的参数,表示初始化(实例化)时将资源(Res r)传递给该构造方法,此后Input类就可以对Res r进行进行操作.
{
this.r = r;
}

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
private Res r ;//这里的r是Res类型的成员变量
这句话什么意思呢 为什么要加private 还有 Res不是类吗 为什么不这样写 Res r =new Res() 还有
Input(Res r)//这个是Input类的构造函数,r是构造函数的形式参数,参数类型是Res
{
this.r = r;
}
这个不是构造方法吗 其中Res r 什么意思 啊
回复 使用道具 举报
private Res r ; 这是声明一个 私有的 Res 对象 r ,和你通常写程序定义的  private int b; 是一样的,一个是int型,一个是 类类型,除此之外,差别不大。
Input(Res r)
{
this.r = r;
}
这个是构造方法,  Res r   表示参数是  Res 类型的一个对象,其实楼主你想的太过于复杂了,觉得 Res 是一个类,而对于这样的调用或使用感到不解,其实本质上它们都是一样的,你想想为什么int 、double 为什么可以这样使用,那是约定俗成的对么,但是有一点,蛮重要的一点,int 、doube这些数据类型,在java库函数中也是一个一个的类,这样就不难理解为何可以这样private Res r;使用了,至于为何不这样写 Res r =new Res() ,这个一个是定义变量,一个是初始化变量,和  int a,int a=5;这是类似的,初始化还是不初始化,完全看你怎么想的了

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马