如果把第一个问题修改为:
Parent p = new Parent(); Parent d1 = new DerivedOne(); DerivedTwo d2 = new DerivedTwo(); 
d1 = (DerivedOne)p; 就可以转换了 !!

解决方案 »

  1.   

    问题1:
        进行向下强制转型时,必须保证对象的类型是子类类型,如:    Parent p = new DerivedOne();
        DrivedOne d1 = (DerivedOne);
      
        是正确的.问题2:
       按照你的程序,没去掉注释前输出为:   I am false interface
       I am false String   将注释行的注释符号去掉,而将原来的String声明行注释掉。那么输出结果为:
       I am true interface
       I am true String   关于接口部分我想你应该知道原因了, 没有实现接口时,肯定输出false
       对于String, 在没有实例化时,即 String s;
         由于 s 是 null, 即引用s没有指向任何对象,所以输出为false.
       实例化后: 即String s = "asdasd"; ,此时引用s指向String对象, 输出为true.   原因是, instanceof是判断引用指向的对象是什么类型,而不是判断引用本身是什么类型!问题3:  public void run()
      {
        while( true )
        {
          doStuff();
        }
        System.out.println("Exiting run");//第15行 编译错误: unreachable statement
        // 这句放在一个死循环后面了,所以到达不了!
      }