繼承:
using System;
class Parent
{
public void Msg() { Console.WriteLine("Parent"); }
}
class Child : Parent { }
class Program
{
static void Main()
{
Parent ObjParent = new Parent();
Child ObjChild = new Child();
ObjParent.Msg(); //Parent
ObjChild.Msg(); //Parent
Console.ReadKey();
}
}
覆蓋:
using System;
class Parent
{
public virtual void Msg() { Console.WriteLine("Parent"); }
}
class Child : Parent
{
public override void Msg() { Console.WriteLine("Child"); }
}
class Program
{
static void Main()
{
Parent ObjParent = new Parent();
Child ObjChild = new Child();
ObjParent.Msg(); //Parent
ObjChild.Msg(); //Child
Console.ReadKey();
}
}
多態:
using System;
class Parent
{
public virtual void Msg() { Console.WriteLine("Parent"); }
}
class Child1 : Parent
{
public override void Msg() { Console.WriteLine("Child_1"); }
}
class Child2 : Parent
{
public override void Msg() { Console.WriteLine("Child_2"); }
}
class Program
{
static void Main()
{
Parent Obj1 = new Child1();
Parent Obj2 = new Child2();
Obj1.Msg(); //Child_1
Obj2.Msg(); //Child_2
Console.ReadKey();
}
}
隱藏:
using System;
class Parent
{
public void Msg() { Console.WriteLine("Parent"); }
}
/* 有意隱藏應使用 new 關鍵字 */
class Child1 : Parent
{
new public void Msg() { Console.WriteLine("Child_1"); }
}
/* 無意隱藏會有提示, 但可用 */
class Child2 : Parent
{
public void Msg() { Console.WriteLine("Child_2"); }
}
class Program
{
static void Main()
{
Parent Obj1 = new Child1();
Parent Obj2 = new Child2();
Child1 Obj3 = new Child1();
Child2 Obj4 = new Child2();
Obj1.Msg(); //Parent
Obj2.Msg(); //Parent
Obj3.Msg(); //Child_1
Obj4.Msg(); //Child_2
Console.ReadKey();
}
}