请问c#中派生类重写基类方法与隐藏基类方法有什么区别
请问c#中派生类重写基类方法与隐藏基类方法有什么区别,什么时候需要隐藏,什么时候重写合适?.我刚开始学c#,有很多东西都搞的不是很清楚,书上说的写不是很明白.请c#的朋友们帮忙指点一下.谢谢!
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方法.
但二者声明与赋值都是同一个类时,不会发生这种问题.