0
我有一個代碼 -能見度內部類變量的
public class Hello
{
void create()
{
Inner obj=new Inner();
obj.r=100; //Able to access private variable x
obj.display(); //displays 100
}
class Inner
{
private int r=45;
void display()
{
System.out.println("r is : "+r);
}
}
public static void main(String[] args)
{
Hello ob=new Hello();
ob.create();
}
}
在上面的代碼中,通過創建內部類的實例,我們能夠訪問該class.But這是所定義的專用變量不inheritance.Why的情況下,它是這樣的嗎?對於例如,在這個代碼 - 提前
class One
{
private int x;
void getData()
{
x=10;
}
void display()
{
System.out.println("x is : "+x);
}
}
class Two extends One
{
int y;
void putData()
{
One o=new One();
o.x=13; //Error
}
}
public class File
{
public static void main(String[] args)
{
Two to=new Two();
to.putData();
}
}
背後是什麼確切的原因是什麼?謝謝...
[在Java中,public,default,protected和private之間的區別是什麼?](http://stackoverflow.com/questions/215497/in-java-whats-the-difference-between-public -default-protected-and-private) – Mephy
很難想象除**以外的答案,因爲**這就是Java的實現方式。 –
使用'protected'有什麼問題?應該在兩種情況下工作。 – puelo