---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ----------------------
using System;
using System.Collections.Generic;using System.Linq;
using System.Text;
using System.IO;
namespace _04面向对象_多态
{
class Program
{
static void Main(string[] args)
{
//封装、继承、多态
//多态:就是一个对象能够表现出多种的类型(状态)
//实现多态的三个手段:虚方法、抽象类、接口
Chinese cn1 = new Chinese("张三三");
Chinese cn2 = new Chinese("李思思");
Japanese j1 = new Japanese("井边君");
Japanese j2 = new Japanese("松下子");
Korea k1 = new Korea("金正X思密达");
Korea k2 = new Korea("李X博思密达");
American a1 = new American("Green");
American a2 = new American("Jim");
English e1 = new English("李雷");
English e2 = new English("韩梅梅");
Person[] per = { cn1, cn2, j1, j2, k1, k2, a1, a2, e1, e2 };
//使用虚方法来实现多态
//第一步:将父类中的方法标记为virturl
//第二部:将子类的方法标记为override 表示重写父类的方法
for (int i = 0; i < per.Length; i++)
{
#region Old Method
//if (per[i] is Chinese)
//{
// ((Chinese)per[i]).SayHello();
//}
//else if (per[i] is Japanese)
//{
// ((Japanese)per[i]).SayHello();
//}
//else if (per[i] is Korea)
//{
// ((Korea)per[i]).SayHello();
//}
//else if (per[i] is American)
//{
// ((American)per[i]).SayHello();
//}
//else
//{
// ((English)per[i]).SayHello();
//}
// per[i].SayHello();
#endregion
per[i].SayHello();
}
Console.ReadKey();
//new:隐藏父类中的方法
}
}
public class Person
{
public virtual void SayHello()
{
Console.WriteLine("我是人类");
}
public string Name
{
get;
set;
}
public Person(string name)
{
this.Name = name;
}
}
public class Chinese : Person
{
public override void SayHello()
{
Console.WriteLine("我是中国人{0}",this.Name);
}
public Chinese(string name)
: base(name)
{
}
}
public class Japanese : Person
{
//public override void SayHello()
//{
// Console.WriteLine("我是脚盆国人{0}",this.Name);
//}
public Japanese(string name)
: base(name)
{
}
}
public class Korea : Person
{
public override void SayHello()
{
Console.WriteLine("我是韩国棒之思密达{0}",this.Name);
}
public Korea(string name)
: base(name)
{
}
}
public class American : Person
{
public override void SayHello()
{
Console.WriteLine("我是米国人{0}",this.Name);
}
public American(string name)
: base(name)
{
}
}
public class English : Person
{
public override void SayHello()
{
Console.WriteLine("我是大不列颠英国鸟{0}",this.Name);
}
public English(string name)
: base(name)
{
}
}
}
---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ----------------------