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方法. 
但二者声明与赋值都是同一个类时,不会发生这种问题. 
 
新闻热点
疑难解答