黑马程序员技术交流社区
标题:
变量私有后是怎么实现类之间传递的?
[打印本页]
作者:
djx900
时间:
2012-3-20 23:04
标题:
变量私有后是怎么实现类之间传递的?
本帖最后由 djx900 于 2012-3-21 00:05 编辑
class Res
{
private String name;
private String sex;
private boolean flag = false;
public synchronized void set(String name,String sex)
{
if(flag)
try{this.wait();}catch(Exception e){}
this.name = name;
this.sex = sex;
flag = true;
this.notify();
}
public synchronized void out()
{
if(!flag)
try{this.wait();}catch(Exception e){}
System.out.println(name+"........"+sex);
flag = false;
this.notify();
}
}
class Input implements Runnable
{
private Res r ;
Input(Res r)
{
this.r = r;
}
public void run()
{
int x = 0;
while(true)
{
if(x==0)
r.set("mike","man");
else
r.set("丽丽","女女女女女");
x = (x+1)%2;
}
}
}
class Output implements Runnable
{
private Res r ; //这还有
Output(Res r)
{
this.r = r;
}
public void run()
{
while(true)
{
r.out();
}
}
}
class InputOutputDemo2
{
public static void main(String[] args)
{
Res r = new Res();
new Thread(new Input(r)).start();
new Thread(new Output(r)).start();
/*
Input in = new Input(r);
Output out = new Output(r);
Thread t1 = new Thread(in);
Thread t2 = new Thread(out);
t1.start();
t2.start();
*/
}
}
Res类中变量私有了 但是没有构造函数 ,外部类也能实例化 实例化之后变量也能访问了
private Res r ; //这还有
Output(Res r)
{
this.r = r;
}
这里的 构造函数接受了参数的 这里有点迷糊 请高手指点下
顺便讲下 对单例的类 是如何访问的
作者:
周建
时间:
2012-3-20 23:29
类Res的属性是私有的,但该类自己的方法可以访问, private Res r ;此处r代表一个Res类型的类变量,可以创建一个Res的实例对象,然后把对象的地址付给r;就可以通过引用对象r调用 Res中的方法,并访问Res的私有成员变量,
作者:
魏群
时间:
2012-3-20 23:50
class Output implements Runnable
{
private Res r ; //这还有
Output(Res r)
{
this.r = r;
}
public void run()
{
while(true)
{
r.out();
}
}
}
传进来的是对象的在堆中的地址,把这个地址赋给Output 类中的r。这就相当于在Output 类中有了一个
Res 类型的对象。这样就可以访问这个对象的变量和方法了。
访问时和正常的访问方式一样没什么区别,例如:如果你要访问的类里的成员变量被private修饰,那么那个类里边得有对外提供访问的public 类型 get变量名()的方法吧。
作者:
OMG
时间:
2012-3-21 00:31
1,关于默认构造函数:不是没有构造函数,是有默认的构造函数,所以没有自定义构造函数的每个类也都能创建对象;
2,关于private修饰:因为创建了对象,所以也能访问,因为是本类对象自我访问;
3,关于对单例类的访问:单例设计模式,有构造函数,但被私有化,(外界对象无法建立给类对象),外界对象可以通过静态调用获取对象,拿到了对象,就可以通过对象访问该对象的所有属性和功能;
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2