zoukankan      html  css  js  c++  java
  • c#面向对象系列2(多态性)

    c#多态性的定义:同一操作作用于不同的类的实例,不同的类将进行不同的理解,最后产生不同的执行结果。c#支持两种类型的多态性:

    《1》编译时的的多态性。编译时的多态性是通过重载来实现的。对于非虚的成员来说,系统在编译时,根据传递的参数,返回的类型等信息决定实现何种操作。

    《2》运行时的多态性。运行时的多态性就是指直到系统运行时,才根据实际情况决定实现何种操作,c#中,运行时的多态性通过虚成员实现。

    编译时的多态性为我们提供了运行速度的快的特点,而运行时的多态性则带来了高度灵活的特点。

    虚方法

    当类中的方法声明前加上virtual修饰符时,我们称之为虚方法,反之为非虚方法。

    class  MyBaseClass

    {

         public   virtual   string     VirtualMethod()

            {

                    return  "这个方法是虚方法";

            }

    }

    重写虚函数

    普通方法的重载指的是,类中的两个以上的方法(包括隐藏的继承而来的方法),取的名字相同,只要使用的是参数或者参数的个数不同,编译器便知道在何种的情况下调用何种方法,而对于基类中的方法重载的另一种特殊形式,在派生类中重新定义此虚函数时,要求的是方法名称,返回值类型,参数类型,参数表中的参数个数。类型顺序都必须与基类中虚方法完全一致,在派生类中对虚函数方法的重载加上override关键字,而且不能有new ,static,virtual等修饰符

    class  MyDerivedClass :MyBaseClass

    {

        public   override    string    VirtualMethod()

            {

                                  return "这个方法是override方法";

            } }

  • 相关阅读:
    [原创]桓泽学音频编解码(13):AC3 位分配模块算法分析
    白话红黑树系列之一——初识红黑树
    白话红黑树系列之二——红黑树的构建
    数据驱动编程之表驱动法
    每周一算法之六——KMP字符串匹配算法
    HDOJ 1098 Ignatius's puzzle
    HDOJ 1097 A hard puzzle(循环问题)
    HDOJ 1019 Least Common Multiple(最小公倍数问题)
    辗转相除法_欧几里得算法_java的实现(求最大公约数)
    HDOJ 1020 Encoding
  • 原文地址:https://www.cnblogs.com/zhijianliutang/p/2250664.html
Copyright © 2011-2022 走看看