子类的实例不可以等于父类,但是父类的实例可以等于子类
如果是:
sub s = new sub(); 
base b = (base) b;
就可以。

解决方案 »

  1.   

    这个是代码在编译时期看上去是没错的。但是到了执行时期,就发现b不是一个sub的实例,就会出错。
      

  2.   

    自动向上转型和强制向下转型base b = new base();
    new出来的就是父类的实例,它不具备子类的任何特性
    因此不能强制向下转型,所以
    sub s = (sub) b;
    不成立相应的
    base b = new sub();
    是成立的
    new 出来的是子类的实例,它具备父类的所有共性
    因此可以自动向上转型推荐参看 Thinking in Java 2nd 前 8 章 ^_^
      

  3.   

    to  friendsk(诺诺书虫):
    应该是:
    sub s = new sub(); 
    base b = (base) s;^_^