c#继承中的函数调用_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > c#继承中的函数调用

c#继承中的函数调用

 2014/12/26 14:47:43  r163  程序员俱乐部  我要评论(0)
  • 摘要:首先看下面的代码:?1234567891011121314151617usingSystem;namespaceTest{publicclassBase{publicvoidPrint(){Console.WriteLine(Operate(8,4));}protectedvirtualintOperate(intx,inty){returnx+y;}}}?12345678910namespaceTest{publicclassOnceChild:Base
  • 标签:C# 函数 继承

class="FocusMe">首先看下面的代码:

? 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看做没有重写似的。

发表评论
用户名: 匿名