我们知道java不支持引用调用,而且如果使用复制构造函数我们使用call by value,那么复制构造函数会递归调用自身无限次。那么复制构造函数如何在java中工作? 提前谢谢。
答案 0 :(得分:0)
与Java中的复制构造函数最接近的等价物是覆盖clone()
类的Object
方法。 javadocs在解释其用法方面做得相当不错。
答案 1 :(得分:0)
如果使用复制构造函数,我们使用按值调用
Java内置了没有复制构造函数。您可以创建自己的一个,但仅在您明确调用它时使用。对于Java来说,它只是另一个没有特殊含义的构造函数。
Java只有原始和引用变量,当复制它们时,不会调用任何方法或构造函数。
e.g。在此示例中,它是复制的引用,而不是对象。
Integer i = 5; // A *reference* to an Integer object.
Integer i = j; // A *reference* to the same object.
复制构造函数将无限次地递归调用自身。
一个常见的误解是Java没有Object变量类型。
答案 2 :(得分:0)
任何对象的Java拷贝构造函数都是此对象的深层副本。 例如,
public Car(String motorShow, double price) {
this.motorShow = motorShow;
this.price = price;
} ^ ordinary constructor for a Car object
//the copy constructor for Car:
public Car(Car other) {
this.motorShow = other.motorShow;
this.price = price;
}
/* Simply in the main class write Car c2 = new Car(c1);
this basically will create a copy of c1 of, and note that changing the attributes of one of the objects won't affect the other since it's a deep copy; unlike this for example:
Car c1 = c2;
here, changing any attribute of c1 or c2 will affect the other, i.e two pointers for the same space or reference in memory */
我希望这会有所帮助。