黑马程序员技术交流社区

标题: 代码找错 [打印本页]

作者: 樊占江    时间: 2012-8-18 01:42
标题: 代码找错
class Info
{
private String name;
}
class Scz
{
private Info info;
Scz(Info info)
{
this.info=info;
}
}
class Xfz
{
private Info info;
Xfz(Info info)
{
this.info=info;
}
}

为什么 Scz 和Xfz 是操作同一个资源。。 不解。


作者: 牛杨    时间: 2012-8-18 02:02
本帖最后由 牛杨 于 2012-8-18 02:13 编辑

感觉你问的问题不明不白的,那我就给你分情况解答吧!

如果你这样写的话:
public static void main(String[] args)
{
      Info info=new Info();
      Scz  scz=new Scz(info);
      Xfz  xfz=new  Xfz(info);
}
那么这两个对象 scz和xfz使用的都是同一个 info对象。因为你只定义了一个info对象,然后都传给了 Scz和Xfz的构造函数。

但是如果你这么写的话:
public static void main(String[] args)
{
           Info info1=new Info();
      Info info2=new Info();
      Scz  scz=new Scz(info1);
      Xfz  xfz=new  Xfz(info2);
}
那么这两个对象 scz和xfz使用的分别是两个 Info对象 scz使用的是info1、xfz使用的是info2。因为你只定义了两个不同的info对象,然后才传给了 Scz和Xfz的构造函数的。


作者: 李知伦    时间: 2012-8-18 02:19
只是在构造器中指定了参数类型是Info类,而且还是个只有私有属性的,没有对外方法的类

什么是操作同一个资源? 貌似没什么好操作的.....






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