C#ベースnew、overrideで複数の区別を実現
1502 ワード
一、newは親クラスの同名を隠す方法にすぎない.このメソッドは、ベースクラスと親クラスに存在します.
二、override.子クラスで親クラスの同じメソッド名を書き換えます.親クラスはabstract、virtualでのみ修飾できます.
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
BaseClass bcdc = new DerivedClass();
bcdc.Method2(); // :Base - Method2
Console.Read();
}
public class BaseClass
{
public void Method2()
{
Console.WriteLine("Base - Method2");
}
}
public class DerivedClass : BaseClass
{
public new void Method2() // , 。
{
Console.WriteLine("Derived - Method2");
}
}
}
}
二、override.子クラスで親クラスの同じメソッド名を書き換えます.親クラスはabstract、virtualでのみ修飾できます.
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
BaseClass bcdc = new DerivedClass();
bcdc.Method2(); // : Derived - Method2
Console.Read();
}
public class BaseClass
{
public virtual void Method2()
{
Console.WriteLine("Base - Method2");
}
}
public class DerivedClass : BaseClass
{
public override void Method2() //
{
Console.WriteLine("Derived - Method2");
}
}
}
}