1.被强制转换为Father类型了
2.怎么说呢,就是老子不能去做儿子

解决方案 »

  1.   

    相反不是有 down -casting 马??
    哪位可以详细的说下 up casting 和 down casting,我一直在这个地方晕/
    谢谢楼主宝地
      

  2.   

    因为父类不具备比子类更多的接口,所以父类对象不能强制转换成子类对象,java在执行期间会检查转型动作,转型不成功会抛出ClassCastException,不过你可以先把子类对象转成父类对象,再将父类对象转成子类对象,这样是不会出错的
      

  3.   


    |
    子上下不是很明确吗,晕什么
    Object o = new String();          //up-casting
    String s = (String)new Object();  //down-cating, 运行错
      

  4.   

    谢谢楼上两位   
    goaling
    先把子类对象转成父类对象,再将父类对象转成子类对象,这样是不会出错的
    是什么意思?
      

  5.   

    楼上的,我就是把子类对象转换为父类对象啊.那么不是使用父类的方法吗?
    Son Son1 = new Son(); //父类目光看子类
    ((Father)Son1).think();那么这句呢?
    以下句子为什么不能运行呢?不是应该显示Out-Date的吗?
    Son Father2 = new Father(); //子类目光看父类
    Father2.think();
      

  6.   

    比如 
    Son Son1 = new Son();
    Father fa=(Father)Son1;
    Son so=(Son)fa;//这样是可以向下转型的
    so.think();
    不过转来转去又转回来了,没多大意思呵呵
      

  7.   

    楼上的,我就是把子类对象转换为父类对象啊.那么不是使用父类的方法吗?
    Son Son1 = new Son(); //父类目光看子类
    ((Father)Son1).think();是转成了父类对象,可是引用指向的还是子类对象,调用think()的时候覆盖了父类的。那么这句呢?
    以下句子为什么不能运行呢?不是应该显示Out-Date的吗?
    Son Father2 = new Father(); //子类目光看父类
    Father2.think();怎么可以用一个子类类型的引用直接指向它的父类对象呢?!一个类的引用只能指向这个类的对象或者它的子类的对象。
      

  8.   

    goaling(ling)第一个问题明白了,谢谢...但第二个问题有些糊涂:
        按照你的意思是说--
    只能 Father Son1 = new Son();//只能用父类的目光来看子类.
         Son1.think();而不能 Son Father2 = new Father(); 不能以子类目光看父类.
           Father2.think(); 请问我的理解正确吗?
      

  9.   

    Son //子类目光看父类
    Father2.think();很简单啊,老子不能做儿子,2楼的回答很清楚了Father2 = new Father(); 这句就是定义了一个Father2 的父类对象,可是不幸的是前面又多了个
    son的子类类型,这样就不可以了