原帖地址 
我在CSDN上看到一篇帖子说外部类实现了多继承,其实不然 
http://topic.csdn.net/u/20100312/10/822b0e94-8d2f-4bf0-9746-3424eaea40ce.html 
外部类本身并没有实现多继承,实现的只是不同类的属性获取以及方法的调用 
因为内部类可以直接访问外部类的属性和方法,所以可以实现伪继承 以下是我对java中模拟多继承我的一点看法 
java中间还是可以实现伪多继承的 
我们知道内部类是可以直接调用外部类的属性和方法的 举例来说 
现在有类A 有一个方法aMethod一个属性aPropertie 
再有一个外部类B,有一个方法bMethod一个属性bPropertie 
B继承A 但是不重写A的方法 
再有个类C 有一个方法cMethod 一个属性cPropertie 
B内部有一个内部类D继承C 有一个方法bMethod 一个属性bPropertie D内部还有一个属性 B outClass; 
我们可以在D的构造里面写 
    outClass = new B(); 
    bPropertie=outClass.bPropertie; 
这样虽然是仿造了多继承,同样的我们可以在bMethod内部调用outClass.Method(); 
感觉我们已经模拟继承了? 
完全不是,要注意B本身还继承了A,而A的方法在B的源文件内并没有体现到 
这里就可以想象了如果单纯的继承,我们还需要了解A有什么方法和属性是被public和protected修饰的,然后通过B作为中间的传递移花接木过来 
写到这里其实很多人可能觉得已经很类似继承了 
我们再想的复杂一点A是否有继承呢,如果超类的层次有许多的话,我们的代码量又是多少呢?属性的话我们可以通过反射的方式把B的属性以及父类的属性全部得到,但是我们不能动态的往D里面增加属性和方法(本人java新手,可能知识面还不够) 
因为D里面有几个方法几个属性都是在反射之前就已经定义好的,如果有高人有办法解决的话欢迎指导本菜 我的想法就是在D里面放一个HashMap用来存放属性,key就是属性名,value就是值 
然后定义一个方法,参数为String methodName,返回类型为Object,里面反射调用outClass的方法,当然还要thorws Throwable,这样我们就可以动态的调用B类以及B类所有父类的方法和属性了 
通过D.dPropertie.get("bPropertie") 我们就可以获得b.bPropertie 
通过D.invoke("bMethod");调用b.bMethod 
到这里很多朋友可能觉得已经实现了多继承了,D本身继承C,现在也可有了B以及B的父类,超类的方法和属性了 
但是我们虽然实现了方法和属性的获取,但是继承的概念在java中很重要的一个的体现却丢了 
java当中的继承有一个很重要的体现就是多态 
我们无法体现出来 
例如我们无法 B test = new D(); 当然在这个例子中可能很多人觉得何必那么麻烦,我又不需要多态的实现,甚至不需要B的超类的方法和属性,这里我只是做一个关于多继承和反射的一个探讨而已 文中可能有些地方有错误,还望指正,本人新手,接受探讨和指导,不接受拍砖谢谢