• c#继承中的函数调用


    首先看下面的代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    using System;
     
    namespace Test
    {
        public class Base
        {
            public void Print()
            {
                Console.WriteLine(Operate(8, 4));
            }
     
            protected virtual int Operate(int x, int y)
            {
                return x + y;
            }
        }
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    namespace Test
    {
        public class OnceChild : Base
        {
            protected override int Operate(int x, int y)
            {
                return x - y;
            }
        }
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    namespace Test
    {
        public class TwiceChild : OnceChild
        {
            protected override int Operate(int x, int y)
            {
                return x * y;
            }
        }
    }
    1
    2
    3
    4
    5
    6
    namespace Test
    {
        public class ThirdChild : TwiceChild
        {
        }
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    namespace Test
    {
        public class ForthChild : ThirdChild
        {
            protected new int Operate(int x, int y)
            {
                return x / y;
            }
        }
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    namespace Test
    {
        class Program
        {
            static void Main(string[] args)
            {
                Base b = null;
                b = new Base();
                b.Print();
                b = new OnceChild();
                b.Print();
                b = new TwiceChild();
                b.Print();
                b = new ThirdChild();
                b.Print();
                b = new ForthChild();
                b.Print();
            }
        }
    }

    看结果:



    从结果中可以看出:使用override重写之后,调用的函数是派生的最远的那个函数,使用new重写则是调用new之前的派生的最远的函数,即把new看做没有重写似的。

  • 相关阅读:
    xfire for web-Service
    如何使用 XSD
    XSD
    一个 XSD 实例
    RE:转:一些不常用的html代码
    <base target="_self"/>标签的用法
    C#有关日期的使用方法
    GridView 高亮某一行
    DropDownList绑定数据库
    Request.Querystring中文乱码问题解决
  • 原文地址:https://www.cnblogs.com/rr163/p/4186688.html
Copyright © 2020-2023  润新知