public class B {
public A fun() {
retrun new Haha();
}
private class AImpl implements A {}
private class Haha implements A {}
}
B b = new B();
A a = b.fun();
//可以使用a,但外界不知道A是哪个具体的类型,这说明将来我们可以修改B类的fun()方法,使用另一个A类的实现,外界也不知道。
问题: 根本就没有明白这怎么把代码给隐藏了? 明显的还是能够看到代码啊? 求详细解释??作者: 我手心里的宝 时间: 2013-3-22 12:53
你这个代码我咋没看懂呢 作者: 张权 时间: 2013-3-22 13:28
我手心里的宝 发表于 2013-3-22 12:53
你这个代码我咋没看懂呢
我也就是没看懂啊, 这段代码就是用来说明匿名内部类有隐藏的好处, 可是真没看出来哪里有隐藏代码的好处?作者: 谢洋 时间: 2013-3-22 13:30
其实不明白你的意思
public A fun() {
retrun new Haha();
}
private class AImpl implements A {}//这两个私有的,对外界来说,是看不到的,当通过public A fun()返回是A类的引用,比如这个类是别人写的,你并不知道其实际类型,
但如果是你写的,如果你记得的情况下,你可以这样子做:Haha a =(Haba) b.fun();对于别人是看不到return这个语句,那就不能贸然这样子做了,有可能返回的实际类型不是Haha;
private class Haha implements A {}