博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

C#中的版本控制问题

Posted on 2011-10-28 18:13  凌风孤鸿  阅读(473)  评论(0编辑  收藏  举报

using System;

namespace NewExample

{

class A

{

public void Method()

{

Console.WriteLine("A.Method");

}

}

class B : A

{

public new void Method()

{

Console.WriteLine("B.Method");

}

}

class Program

{

static void Main(string[] args)

{

A a = new A();

B b = new B();

A c = b;

a.Method();

b.Method();

c.Method();

//按回车键结束

Console.ReadLine();

}

}

}

输出结果:

A.Method

B.Method

A.Method

例子中先建立了A类的对象a,因此可以直接调用Method方法,并输出相关的字符串。

b对象声明为B类型,当调用b的Method方法时,实际上是调用定义在B类中的方法。

c对象声明为A类型,却初始化为B类的对象。当调用c的Method方法时,由于c对象声明为A类型,因此c便被视为A类型的对象,调用的将是A类中的Method方法。