C#中的隱藏和重寫
阿新 • • 發佈:2019-02-15
使用下面的程式碼可以隱藏
public class BaseClass
{
public void Show()
{
Console.WriteLine("BaseClass!");
}
}
public class DerivedClass:BaseClass
{
public void Show()
{
Console.WriteLine("DerivedClass!");
}
}
儘管可以執行,不過會出一個警告:你試圖隱藏一個基類成員,如果是無意隱藏,可以修改。如果確實要隱藏可以使用new顯示錶明意圖
加上new以後,警告消失public class BaseClass { public void Show() { Console.WriteLine("BaseClass!"); } } public class DerivedClass:BaseClass { new public void Show() { Console.WriteLine("DerivedClass!"); } }
下面來看如何重寫
再來看看這兩種方式的區別public class BaseClass { public virtual void Show() { Console.WriteLine("BaseClass!"); } } public class DerivedClass:BaseClass { public override void Show() { Console.WriteLine("DerivedClass!"); } }
//重寫 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { public class BaseClass { public virtual void Show() { Console.WriteLine("BaseClass!"); } } public class DerivedClass:BaseClass { public override void Show() { Console.WriteLine("DerivedClass!"); } } class Program { static void Main(string[] args) { BaseClass baseclass = new BaseClass(); DerivedClass derivedclass = new DerivedClass(); baseclass.Show();//BaseClass! derivedclass.Show();//DerivedClass! baseclass = derivedclass; baseclass.Show();//DerivedClass! } } }
//隱藏
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
public class BaseClass
{
public virtual void Show()
{
Console.WriteLine("BaseClass!");
}
}
public class DerivedClass:BaseClass
{
new public void Show()
{
Console.WriteLine("DerivedClass!");
}
}
class Program
{
static void Main(string[] args)
{
BaseClass baseclass = new BaseClass();
DerivedClass derivedclass = new DerivedClass();
baseclass.Show();//BaseClass!
derivedclass.Show();//DerivedClass!
baseclass = derivedclass;
baseclass.Show();//BaseClass!
}
}
}