public class Test 

    public static void main(String[] args) 
    { 
        A a = new C(); 
        B b =(B)a;//这里应该怎样理解 如果是转换a引用里的对象 那么完全可以省略(B) 但是省略会出错误 如果只是将a由A类型转换到B类型 那么这里理解不过去  A B没有关系啊 关键是 强制类型转换 是将引用换个类型呢??还是将里面的对象换个类型呢 ?? 但是对象不可变啊!!!!!!!!  
    } 
} class A 
{} 
interface B 
{} 
class C extends implements B 
{} 

解决方案 »

  1.   

    A是跟B没关系,但是A和C有关系,C又和B有关系.....你的C类应该是继承自A类,
    所以A a = new C(); 这一条通过。
    B b = (B)a; 这一句
    你可以分成两条语句看:
    1. C c = (C)a;//C继承自A,可以强制转换2. B b = (B)c;/C实现了B,可以转换。
      

  2.   


    class A 
    {} 
    interface B 
    {} 
    class C extends A implements B 
    {}
    A a = new C(); 
    B b =(B)a;
    // 通过C类构造一个A类型的对象(因为C类继承自A类)。又将A类的对象a强制转换为类接口类型B,这里转换是理所当然
    // 的呀,因为C类实现了B接口啊!