Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JAVA:创建对象的说明_Java_Oop_Object - Fatal编程技术网

JAVA:创建对象的说明

JAVA:创建对象的说明,java,oop,object,Java,Oop,Object,我是Java新手,目前正在学习基于oracle Java教程的Java,链接如下: 根据上述代码,网站上的声明如下: Rectangle rectOne = new Rectangle(originOne, 100, 200); 这将调用矩形的一个构造函数,该构造函数将origin初始化为originOne。此外,构造函数将宽度设置为100,将高度设置为200。现在对同一点对象有两个引用一个对象可以有多个引用,如图所示: 我的问题是,上面的图像是否正确表示代码?我 相信origin和ori

我是Java新手,目前正在学习基于oracle Java教程的Java,链接如下:

根据上述代码,网站上的声明如下:

Rectangle rectOne = new Rectangle(originOne, 100, 200);
这将调用矩形的一个构造函数,该构造函数将origin初始化为originOne。此外,构造函数将宽度设置为100,将高度设置为200。现在对同一点对象有两个引用一个对象可以有多个引用,如图所示:

我的问题是,上面的图像是否正确表示代码?我
相信origin和originOne在图中应该是相反的,因为它将origin初始化为originOne。如果我错了,请纠正我。

是的,图像正确地表示代码。我们可以有任意数量的引用指向同一对象。 考虑到图像[1]: 有一个点对象被初始化为x=23,y=94。 基本上,“点”是一个类。 初始化期间

Point originOne =  new Point(23,94);
Point类的对象是在java的JVM中创建的,它占用了特定数量的内存。对象引用“originOne”包含对象“Point”的内存地址

为了引用这个内存位置,我们使用“对象引用”,在本例中是originOne。所以,我们可以有任何数量的参考资料

Rectangle rectOne = new Rectangle(originOne, 100, 200);
这将调用以下构造函数

public Rectangle(Point p, int w, int h) {
origin = p;
width = w;
height = h;
}
现在“originOne”的值被复制到矩形的变量“origin”。 因此,原点现在成为对象点的对象参考

它们引用相同的对象(相同的内存地址),其中x=23,y=94

尝试打印对象引用,它将为您提供:- 适当的classname@hexadecimal内存位置的哈希代码

为了更好地理解,假设 1> 目标是人 2> 对象对名称的引用

让人类的名字正式成为艾伦,他的爱称成为保罗。 但保罗或艾伦仍然指同一个人

我希望你现在明白了

从概念上讲,是的。所以

如果你这样做

originOne.setLocation(0,0);
这将反映在
origin
rectOne
中,因为
origin
在堆中引用的位置与
originOne

如果你这样做了

originOne = new Point(0,0);

您已经从以前的引用断开了
originOne
,但是
rectOne
origin
将继续指向以前的引用,即点[x=23,y=94]。

感谢Prashast的总结,我可以断定rectOne是一个新的矩形对象,包含宽度100,高度200,x=23,y=94?矩形是一个新的矩形对象,宽度=100,高度=200原点。x=23;origin.y=94。矩形具有点对象原点,因此它将是origin.x和origin.y。
originOne = new Point(0,0);