关于C#中,继承类重写与隐藏基类方法的区别!

王朝c#·作者佚名  2006-01-09
宽屏版  字体: |||超大  

using System;

using System.Collections;

public class Nevermore60Customer:Customer

{

public override string GetFunnyString()

{

return "Nevermore60.Nevenmore!";

}

public class Customer

{

public virtual string GetFunnyString()

{

return "Plain ordinary customer.Kaark!";

}

public class SamplesArray

{

public static void Main()

{

Customer Cust1=new Nevermore60Customer();

Nevermore60Customer Cust2;

// Cust1=new Customer();

Console.WriteLine("Customer referencing Customer."+Cust1.GetFunnyString());

Cust1=new Nevermore60Customer();

Console.WriteLine("Customer referencing Nevenmore60Customer:"+Cust1.GetFunnyString());

Cust2=new Nevermore60Customer();

Console.WriteLine("Nevenmore60Customer referencing"+Cust2.GetFunnyString());

}

}

Customer Cust1=new Nevermore60Customer();

如果是重写:则,如果声明的基类对象,指向的是派生类,那么这时调用的是派生类中对基本重写的方法的方法(如上所示)

如果是隐藏基类方法: public New string GetFunnyString()

{

return "Nevermore60.Nevenmore!";

}

则:Customer Cust1=new Nevermore60Customer();此时Cust1调用的仍是声明时候的基类中的GetFunnyString方法.

但二者声明与赋值都是同一个类时,不会发生这种问题.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有