一个父类F一个子类Z,父类有ab两个方法,子类中有bc两个方法,但是子类的b方法跟父类的方法体不一样,在创建对象的时候,F f=new Z();这里面f可以调用b方法,执行的是子类的方法体中的方法,

解决方案 »

  1.   

    parent p = new child();
      

  2.   

    父类引用指向子类对象没有错,但是指向谁就调用谁的方法,这个可不一定,例如:Parent child = new Child();如果子类没有重写父类的方法,此时调用的还是父类的方法,只是子类继承过来了,但是方法还是包含在父类中,只是相当于父类被包在了子类里面。同时如果子类新增了方法,利用child对象去调用是调用不到的。
    其实多态还有很多应用,当然最主要的还是楼主说得这些最基础的咯。主要是当不同的类继承了同一父类时,这时操作起来,就方便很多了,例如临时存储等操作。
      

  3.   

    楼主你好
    你对多态的理解没错,最后两行代码确实是Parent cannot be cast to Child 错误
    但是我还想多说下多态的机制,这样可能更明白为什么
    ===============
    多态分四种,楼主帖子中提到的是强制多态。
    咱们就说强制多态吧,其他的网上都能搜到。
    Java中所有方法(除了static和final方法)都是动态绑定的,也就是说在运行的时候(非编译),才知道哪个类型的(是父类的?还是子类的?)对象调用该方法。
    也就是说,在运行时,对象中肯定包含某种“类型信息”。
    这也就是楼主描述的多态吧。 
    说的不好,可以再交流。