zoukankan      html  css  js  c++  java
  • 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看做没有重写似的。

  • 相关阅读:
    进程与线程
    java的引用
    基本类型变量、引用类型变量的在java中的存放位置
    Spring学习(三)
    Spring学习(一)
    Struts2学习(三)
    Vue,resource基本使用
    uni-app v-for数据的绑定唯一
    uni-app,v-for时 block 和 view 的使用
    Vue,生命周期函数演示(创建阶段的4个钩子函数,组件运行和销毁阶段的钩子函数)
  • 原文地址:https://www.cnblogs.com/rr163/p/4186688.html
Copyright © 2011-2022 走看看