最近看书看到这样的写法也可以。不知道为什么?假设有接口A,B类C同时实现接口A,B则在调用时:A  a = new C();
a.doXXX();然后:为什么这样写也可以?B b = (B)a;  //将另一个接口转换成当前接口
b.doXXX();想问一下a里面存放的是什么?为什么能转?

解决方案 »

  1.   

    a里面是C的类的一个实例。它有两个父类。即A\B
      

  2.   

    a的本质应该是C类的对象,由于C实现了b接口,那么可以通过b调用b接口的方法
      

  3.   

    可以这样理解 C将武功传授给了B,所以B可以教A武功
      

  4.   

    里面是C的类的一个实例。它有两个父类。即A\B
      

  5.   

    a instanceof A
    a instanceof B
    就知道咯
      

  6.   

    a里面放着A和B的所有方法,转成A就能调用A接口中的方法,转成B就能使用A接口中的方法,并且向上转型是安全的。
      

  7.   

    LZ A接口和B接口是什么关系?