精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-09-15
public class Inner { private int i=0; private Inner() { this.i=1; } } public Inner getInner() { return new Inner(); } public static void main(String[] args) { Outer outer = new Outer(); Inner inner = outer.getInner(); System.out.println(inner.i); } } 大家都知道非内部类的私有成员只能是类自有方法才能访问,其他类不管用什么方法都不能访问;而在上面代码中,为什么Outer类的main方法能通过Inner类的实例outer访问私有成员i??? 出发点在哪? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2006-09-15
明明是你用内部类的对象来访问的i这个私有属性的,怎么说是外部类来访问?
关于内部类我做个一个小的总结,你可以参考一下. http://redhacker.blueidea.com/archives/2006/2923.shtml |
|
返回顶楼 | |
发表时间:2006-09-15
因为main是Outer本身的方法咯
|
|
返回顶楼 | |
发表时间:2006-09-15
adamzhao 写道 因为main是Outer本身的方法咯 确实是用内部类的对象来访问的i这个私有属性的,难道通过对象就能访问私有属性?换个非内部试试
|
|
返回顶楼 | |
发表时间:2006-09-15
同一楼 外部的out根本就没调用那个private
他调用的是public的get方法 |
|
返回顶楼 | |
发表时间:2006-09-15
ddandyy 写道 同一楼 外部的out根本就没调用那个private
他调用的是public的get方法 public的get方法在哪? |
|
返回顶楼 | |
发表时间:2006-09-15
gqdou 写道 明明是你用内部类的对象来访问的i这个私有属性的,怎么说是外部类来访问?
关于内部类我做个一个小的总结,你可以参考一下. http://redhacker.blueidea.com/archives/2006/2923.shtml 谢谢你的总结,不过文章里的结论的第三条写的: 3、外部类对其内部类的属性和方法的访问和访问其他类一样,需要先构造一个对象然后进行访问,不过对于内部类的构造首先要构造一个外部类,进而进一步进行构造内部类。 即然,外部类对其内部类的属性和方法的访问和访问其他类一样,好了,外部类能通过访问其他类的实例访问其他类的私有属性吗? |
|
返回顶楼 | |
发表时间:2006-09-15
一直想不明白,为什么Java的private关键字到这儿就不灵了,是Java故意如此,还是有什么别的原因?
|
|
返回顶楼 | |
发表时间:2006-09-15
你可以动手试一下,我直接告诉你答案不足让你完全信,实践出真知,你印象会非常深刻.
|
|
返回顶楼 | |
发表时间:2006-09-15
gqdou 写道 你可以动手试一下,我直接告诉你答案不足让你完全信,实践出真知,你印象会非常深刻.
我知道这段代码运行没问题,可我想弄清楚,为什么会这样? |
|
返回顶楼 | |