面试体会二:面向对象之多态(一、理论知识)

今天又去面试了,试题中有问到对C#中多态的理解,并写个简单的例子。

以此为动力今天详细看了一下C#中的多态应该怎么去理解(2009-05-15)

       多态同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性

      多态性通过派生类覆写基类中的虚函数型方法来实现。

      所有的面向对象的语言都具有多态的特性,C#有多态性,那么C++,Java也都有. 
     多态可以分为静态多态(方法的重载)和动态多态(虚方法的重写)。
     (1)静态多态 也称为编译时的多态  是通过重载来实现的。对于非虚的成员来说,系统在编译时,根据传递的参数、返回的类型等信息决定实现何种操作。 
     (2)动态多态 也称为运行时的多态  是指直到系统运行时,才根据实际情况决定实现何种操作。C#中运行时的多态性是通过覆写虚成员实现。

多态中涉及到的四个概念:重载,覆写,虚方法和抽象。

(1)重载  overload(方法的重载)方法名相同,参数不同,返回值不同可以称为重载。

         声明同名的两个方法

         public int Calculate(int x, int y)

         public double Calculate(double x, double y)

(2)覆盖   override  派生类重写父类的某个虚方法(Virtual Method)。方法名相同,参数相同,返回值相同。

(3)虚方法: virtual   使用关键字Virtual声明,属性和方法可以声明为虚方法,成员和Static 函数都不可以声明。虚方法可以有方法体。
(4)抽象 分为抽象方法和抽象类。

      抽象函数也是虚拟的,可以看成是没有实现体的虚方法, Virtual 和abstract不能同时用。

      抽象函数一定要定义在抽象类中。    

      抽象类不能实例化,而抽象函数没有执行代码,必须在非抽象的派生类中重写。
 

posted @ 2009-05-15 20:56  笑萧亦然  阅读(1599)  评论(0编辑  收藏  举报