class A {}
                   class B {}
                   class B extends A {}
                   public class Text { 
                     public static void main(String []args) {
                       B b = new A(); //为什么出错
                       B b = (B) A(); //为什么运行出异常
                       A a = new B();
                       B b1 = a; //这句怎么又可以了呢,有点晕. 这两种写法到底哪个是向下转型.
                     }
                   }

解决方案 »

  1.   

    追加问题. java中的异常处理. 如果我写cath(Exception e){} 不管try中抛出是什么种类的异常. Exception都会接收吧,这是什么转型呢??
      

  2.   

    B b = new A(); //为什么出错
      B b = (B) A(); //为什么运行出异常
    问题在于你的子类引用指向了父类对象,肯定不对啊楼主想向下类型转换
    首先A a = new B(); 让父类引用指向子类对象
    然后B b1 = (B)a;将a强制转换为B类型,也就是向下类型转换了,由父类转为子类追加的问题,因为所有的异常都是Exception的子类,所以你说的没错都会接受,是向上类型转换