标题: java语言对于多态的理解 [打印本页]

作者: piaolin    时间: 2015-10-1 13:20
标题: java语言对于多态的理解
         人家说面向对象语言如java主要就三大件:封装,继承,多态。java语言对于多态的理解,确实感觉有些难度。如何用自己的语言来描述并理解“多态”这个概念呢?听了3个牛人(郝斌,马士兵,千锋)的讲解,还是觉得千锋的讲解最容易理解,他的学习方法也值得推广。

        理解“多态 ”之前,先记住两条语法:1,一个引用能够调用哪些成员(变量,函数)取决于这个引用本身的类型。对于这句话我的理解:a),多态的前提必须是两个对象之间存在继承关系,只有确保对象之间是继承关系,才能保证不会出现“人是狗,狗是人”的混乱关系。所谓引用就是指针,如,p.name = "zhangsan"; p就是指向某个对象的指针。如,p和s都是指向某个对象的指针,如果:p=s; 则根据本条语法的理解,p所能够调用的成员就是p本身有的那些成员。如何理解“能够调用的成员”呢?“调用”对于变量而言就是赋值,如p.;  这就是赋值;如果调用的是方法,那就是执行一个函数,如,p.study(..);这就表示调用函数。2,一个引用调用的是哪个方法,取决于这个引用所指向的哪个对象。因为在多态中一定存在方法的重写,引用调用的到底是哪个方法?有时容易混乱,如,p和s都是指向某个对象的指针,p=s; 如,p.study(..);这就表示study(..)函数是s所指向的对象的方法。例:
class Test{
    public static void main(string args[])
    { Student s = new student();
      Person  p = s; //向上转型upcasting
      p.;
      p.age=20;
      p.introduce();//introduce()指向的是student对象的方法


    }

}
   实在理解不了,就背下来。这就是千锋等牛人共同推荐的学习方法。









欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1