2013-01-25 153 views

回答

4

在帖中,我們談論「嵌套」類

這裏是一個內部類如何訪問外部類的私有區域的例子。

class OuterClass { 
private int x = 7; 

public void makeInner(){ 
    InnerClass in = new InnerClass(); 
    in.seeOuter(); 
} 
class InnerClass { 
    public void seeOuter() { 
     System.out.println("Outer x is " + x); 
    } 
} 
public static void main(String[] args) { 
    OuterClass.InnerClass inner = new OuterClass().new InnerClass(); 
    inner.seeOuter(); 
} 

}

最後,如果你用將InnerClass擴展一個類,他們也將訪問在OuterClass的私人領域,如果你將InnerClass是公共或保護

0

應當假定(但編譯器不執行它,僅警告),即一個private方法將結束正在由publicprotected或默認方法(否則它是無用的)。

因此,擴展類可以通過調用publicprotected或結束調用私有方法的默認方法來「間接」調用private方法。

+0

因此,在這種情況下,它不會有機會獲得公共修飾符的方法普通班不同的子類 –

+0

時訪問類型可以這樣做其他班也是如此。我的問題是關於具體的報價案例。 –

0

是的,我們可以訪問私有通過超類的公共方法,可以從子類的引用變量中調用子類的引用ID來調用子類中的超類的成員。 例如: -

class Base 
{ 
    private int x=10; 

    void show() 
    { 
     System.out.println(x); 
    } 
} 

class Child extends Base 
{ 

    public static void main(String... s)// public static void main(String[] args) 
    {  
     //rom jdk 1.7 main can be defined like above 
     Child c=new Child(); 
     c.show(); 
    } 
} 

輸出將是10