2012-07-05 64 views
1

爲什麼保護對於不同類的子類中的其他類是私有的,但它仍然保護在同一個超類的包中。爲什麼保護對於其他類中的其他類是私有的

package a; 
class A 
{ 
    protected a; 
} 

package b; 
class B extends A 
{ 
    B() 
{ 
    System.out.println(a); 
} 
} 

class C 
{ 
    C() 
    { 
    System.out.println(new B().a);//error 
    } 

} 

回答

4

因爲包是不相關的類protected訪問修飾符的「可見度極限」。請參閱該文檔在這裏:http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html

protected修飾符指定的成員只能是它自己的包內,在另一個訪問 (與包專用),此外,通過 其類的子類包。

從上面可以看出,你既不是子類,也不是相同包的情況。

+0

「* C既不是A的子類也不在同一個包中*」你剛剛剽竊我嗎? – user1329572 2012-07-05 13:12:22

+0

@ user1329572:不,我沒有,我似乎是一個巧合。如果它困擾你,我會重寫它。 – Tudor 2012-07-05 13:13:41

+0

這不是一個原始的句子。我不會改述。 – 2012-07-05 13:14:52