什么是复制构造函数?
有人可以分享一个有助于理解的小例子吗防御性复制原则?
这是一个很好的例子:
class Point {
final int x;
final int y;
Point(int x, int y) {
this.x = x;
this.y = y;
}
Point(Point p) {
this(p.x, p.y);
}
}
注意构造函数如何Point(Point p)
需要一个Point
并复制它 - 这是一个copy constructor
.
这是一个defensive
复制是因为原来的Point
通过复制它来防止更改。
So now:
// A simple point.
Point p1 = new Point(3,42);
// A new point at the same place as p1 but a completely different object.
Point p2 = new Point(p1);
请注意,这不一定是correct创建对象的方式。然而,它是一个good创建对象的方式确保你永远不会意外地两次引用同一个对象。显然,如果这就是您想要实现的目标,那么这只是一件好事。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)