zoukankan      html  css  js  c++  java
  • 面试体会二:面向对象之多态(一、理论知识)

    今天又去面试了,试题中有问到对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不能同时用。

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

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

  • 相关阅读:
    火眼金睛算法,教你海量短文本场景下去重
    CynosDB技术详解——架构设计
    CynosDB技术详解——存储集群管理
    解决 "Script Error" 的另类思路
    Go 语言实践(一)
    Vue.js的复用组件开发流程
    MYSQL中的COLLATE是什么?
    Blending
    AlphaTesting
    Culling & Depth Testing
  • 原文地址:https://www.cnblogs.com/mishy/p/1457939.html
Copyright © 2011-2022 走看看