我知道如果类的实例变量是private
,那么对象不会直接访问它。
但是在下面的代码中,正在发生这样的事情,代码运行正常!
b
如何直接访问长度,宽度和高度?
public class Box {
private int length,breadth,height;
Box(int a,int b,int c){
length=a;
breadth=b;
height=c;
}
Box(Box b){
length=b.length; //These lines!
breadth=b.breadth;
height=b.height;
}
int volume(){
return length*breadth*height;
}
}
public class BoxWeight extends Box{
public int weight;
BoxWeight(int a,int b,int c,int d){
super(a,b,c);
weight=d;
}
BoxWeight(BoxWeight b){
super(b);
weight=b.weight;
}
}
class apples
{
public static void main(String[] args)
{
BoxWeight mybox1=new BoxWeight(10,20,30,40);
BoxWeight clone=new BoxWeight(mybox1);
System.out.println(mybox1.volume()+"...."+mybox1.weight);
System.out.println(clone.volume()+"...."+clone.weight);
}
}
答案 0 :(得分:4)
因为参数类型相同。在java中,对象可以访问相同类型的其他对象的私有成员。因此,在这种情况下,Box
可以访问Box
类的任何私有成员,即使在不同的对象中也是如此。
答案 1 :(得分:1)
private
表示字段(或内部类或方法)在类外部不可见(对任何其他类型而言)。但由于b
属于同一类型Box
,因此此限制不适用。
答案 2 :(得分:0)
Private
其他类无法访问; b
也属于Box
类型,因此它位于自己的家中!
答案 3 :(得分:0)
简单地说,Box对象可以访问Box类中Box 的私有。