class A{
}class B extends A implements D{
}class C extends A{
}interface D{
}class E{
}
public class Test{
public static void main(){
A a = new A();
B b = new B();
E e = new E();
C c = new C();

C d = null;

a = b;
d=b;
d=(D)a;

}
}

解决方案 »

  1.   

    d的类型是C,b的类型是B,C和B之间没有继承关系,它们的变量不能相互赋值。这是很基础很基础的知识了。
      

  2.   

    public static void main()
    main里面参数
      

  3.   

    若没有其他原因,说明lz使用的是山寨版的jdk
      

  4.   

    C类型和B类型没有继承关系d=b;应该是错的,最后一句同样也错了
      

  5.   

    class A{ 
    } class B extends A implements D{ 
    } class C extends A{ 
    } interface D{ 
    } public class Test{ 
    public static void main(){ 
    A a = new A(); 
    B b = new B(); 
    E e = new E(); 
    C c = new C(); D d = null; a = b; 
    d=b; 
    d=(D)a; } 
    }对不起我发错了,应该是这个
      

  6.   

    你在 a = b;后面加上System.out.println(a.getClass().getName());
    System.out.println(b.getClass().getName());
    看看输出就知道为什么了