2015-11-04 134 views
0

我對此很困惑。任何一個可以清楚我爲什麼沒有讓我已經把無評論訪問受保護的成員

package pack1; 
public class A { 
    protected void m1() { 
    System.out.println("This is very imp point"); 
} 


package pack2; 
import pack1.A; 
class B extends A { 
    public static void main(String arg[]) { 
    // A a1 = new A(); 
    //a1.m1(); 
    B b1 = new B(); 
    b1.m1(); 
    //A a2 = new B(); 
    //a2.m1(); } 
    } 
} 
+1

請花時間正確格式化您的代碼。 SO用戶是有幫助的,但不是那麼有用,他們會讀取格式不正確的代碼,爲您設置格式,然後解決您的問題。 – Arc676

回答

0

您可以訪問受保護的成員AB聲明的代碼,但只爲B實例或B子類。看看這個answer

1

方法m1protected,所以它可以通過包訪問子類。

因此,B的實例將能夠調用或@Overridem1

並非如此mainstatic方法,即使屬於類B:範圍是不同的。

您可以在A中公開m1,或者在B(例如,在構造函數等中)的實例中調用它。

可以覆蓋Am1B,並給它的機會較少的限制,從而使其public在這種情況下:那麼你可以從你的main方法來訪問它的B實例作爲你想去做。