您的位置:首页 > 其它

new作为修饰符时的使用,以及接口的显式实现

2008-06-26 18:28 225 查看
先上代码:

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

BClass b = new BClass();

((AClass)b).Output();

b.Output();

((IA)b).Output();

Console.ReadLine();

}

}

public interface IA

{

void Output();

}

public abstract class AClass : IA

{

public AClass()

{

Console.WriteLine("AClass");

}

public virtual void Output()

{

Console.WriteLine("AClass Output");

}

IA Members#region IA Members

void IA.Output()

{

Console.WriteLine("AClass Output Exlicitly");

}

#endregion

}

public class BClass : AClass

{

public BClass()

{

Console.WriteLine("BClass");

}

public new void Output()

{

Console.WriteLine("BClass Output");

}

}

}
输出为:

AClass...

BClass...

AClass Output...

BClass Output...

AClass Output Exlicitly...

将代码中的new 替换为override,则输出变为:

AClass...

BClass...

BClass Output...

BClass Output...

AClass Output Exlicitly...

从以上代码我们可以看出:

new 作为修饰符时,其作用是隐藏从基类继承过来的方法,注意,仅仅是隐藏,这就意味着我们还是有办法调用到被隐藏的那个方法。而要调用被隐藏的那个方法,实现办法和要调用显示实现的接口方法一样。

而如果用override时,就会重写从基类继承过来的方法,那么,就怎么也调用不到基类的那个方法了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐