2017-05-25 133 views
1

我仍然不明白爲什麼「Acc obj = new Test()」不會訪問超類中的受保護整數,但「Test obj = new Test()」將授予訪問權限。受保護成員的繼承

Acc obj = new Test(); < - 對受保護的整數沒有權限

Test obj = new Test(); < - 是的存取權限保護的整數

package p1; 
public class Acc { 
int p; 
private int q; 
[b]protected int r;[/b] 
public int s; 
} 

package p2; 
import p1.Acc; 
public class Test extends Acc { 
    public static void main(String[] args) { 
     // insert LINE 
    } 
} 
+1

感謝您的幫助 –

+0

請顯示您正在嘗試訪問'r'的位置以及出現的錯誤。 – Thilo

回答

1

的Java只允許子類訪問受保護的成員,是在不同的包,如果是「負責實施」 ....即。如果它可以確定類型IS-A的子類。如果你想訪問受保護的成員,而使用超類引用,則需要首先進行轉換。