一、本类中,或外部类中
public class Outer {
class Inner{
private int a = 5;
private void f(){
System.out.println("abc");
}
/*
* 一个类的私有成员在本类外部是不可见的,即使在本类外部创建了本类对象,也不能调用私有成员,除非开放了一个公有接口
* 一个类的内部类的私有成员在外部类获得内部类对象后是可以调用的
*
* 可以这样理解:
* 比方说两个独立的人张三和李四,李四有点石成金的技能
* 张三抓住了李四(相当于获得了李四这个对象),他强迫使用李四的点石成金的方法,但李四很有骨气,宁死也不给他用
* 最后迫于无奈,李四说我可以给你变金子,但必须答应我的某些条件..
*
* 如果李四是张三的忠心耿耿的手下
* 那么张三有了李四,就可以无条件的使用李四的点石成金
*
*/
}
public Inner getInner(){
// Inner inner = new Inner();
// return inner;
return this.new Inner();
}
public static void main(String[] args) {
Inner inner = new Outer().getInner();
System.out.println(inner.a);
inner.f();
}
}
class Inner{
private int a = 5;
private void f(){
System.out.println("abc");
}
/*
* 一个类的私有成员在本类外部是不可见的,即使在本类外部创建了本类对象,也不能调用私有成员,除非开放了一个公有接口
* 一个类的内部类的私有成员在外部类获得内部类对象后是可以调用的
*
* 可以这样理解:
* 比方说两个独立的人张三和李四,李四有点石成金的技能
* 张三抓住了李四(相当于获得了李四这个对象),他强迫使用李四的点石成金的方法,但李四很有骨气,宁死也不给他用
* 最后迫于无奈,李四说我可以给你变金子,但必须答应我的某些条件..
*
* 如果李四是张三的忠心耿耿的手下
* 那么张三有了李四,就可以无条件的使用李四的点石成金
*
*/
}
public Inner getInner(){
// Inner inner = new Inner();
// return inner;
return this.new Inner();
}
public static void main(String[] args) {
Inner inner = new Outer().getInner();
System.out.println(inner.a);
inner.f();
}
}
二、其他类中
import day13.other.Outer.Inner;
public class Other {
public static void main(String[] args) {
Inner i = new Outer().getInner();
i.f(); //报错
System.out.println(i.a); //报错
}
}
public class Other {
public static void main(String[] args) {
Inner i = new Outer().getInner();
i.f(); //报错
System.out.println(i.a); //报错
}
}