继承:
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();
}
}