我有一个班级
class Box {
private double width;
private double height;
private double depth;
Box(Box ob) {
width = ob.width;
height = ob.height;
depth = ob.depth;
}
}
此课程已编译。但是我堆叠 - 为什么?!我有私人字段!
为什么我可以访问私有字段?
答案 0 :(得分:4)
答案 1 :(得分:2)
私人并不意味着只有对象可以访问其私人成员,这意味着类可以。因此,在您的情况下,Box
类的任何对象都可以访问任何其他Box
对象的所有私有成员,只要它具有对它的引用。
答案 2 :(得分:0)
因为这些私人领域只对外部世界隐藏 - 这意味着对于课外。在这个类中,任何非静态成员(即非静态方法,初始化块或构造函数)都可以直接访问它们
要从static
类中的静态方法访问这些(非Box
)私有成员,您必须创建一个box类的实例,并且在使用getter方法之后,您可以访问它们。
public static void methodInsideBox(){
Box b = new Box(Box b);
//using getter method
double width = getWidth(b);
}