如何在复制构造函数中看到private itemset
属性?
import java.util.List;
import java.util.ArrayList;
public class Itemset {
private List<Integer> itemset = new ArrayList<Integer>();
private static long count = 0;
// copy constructor
public Itemset(final Itemset other) {
count++;
this.itemset = other.itemset;
}
}
答案 0 :(得分:6)
因为您正在使用复制构造函数;)
更严重的是:private
变量具有类级别可见性;您的other
对象是一个不同的实例,但它具有相同的类;因此,允许从构造函数中看到此对象的实例成员。
注意“班级”。它意味着内部类的实例变量可由外部类看到,反之亦然:
class A {
private int a; // instances of B see this
class B {
private int b; // instances of A see this
}
}
答案 1 :(得分:1)
复制构造函数是该类的成员,那么为什么不应该可以从它访问itemset
变量?类中的所有变量成员对成员函数都是可见的。
为了清除这种混淆,是的,您仍然可以跨所述类的实例访问私有成员,因为它们只是在所述类的范围内“隐藏” 。
这就是为什么从另一个实例的复制构造函数的调用访问itemset
实例的other
成员是完全有效的。
答案 2 :(得分:1)
private
对于calss