2013-01-25 132 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