您的位置:首页 > 职场人生

黑马程序员-C#面向对象之多态

2014-03-15 19:00 267 查看
----------------------
ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
        把一组相关的对象放到一个数组或集合中,然后调用它们名字相同的方法,在这种情况下,面向对象的多态性就体现出来了,这些对象可以不是相同类型的对象。如果它们都继承自某一个类,可以把这些派生类的对象放到一个数组中。如果这些对象都有同名方法,也可以调用每个对象的同名的方法。
       同一方法作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。多态性通过派生类重载基类中的虚函数型方法来实现。
class Program
{
static void Main(string[] args)
{
IList< Person > persons= new List<Person>();
persons.Add(new Person());
persons.Add(new American());
persons.Add(new Japanese());
foreach(Person p in persons)
{
p.SayHello();
}
Console.ReadKey();
}
}
class Person
{
private string name;
private int age;

public string Name
{
get { return name; }
set { name = value; }
}
public int Age
{
get { return age; }
set { age = value; }
}
public virtual void SayHello()
{
Console.WriteLine("我是一个人。");
}
}

class American : Person
{
public override void SayHello()
{
Console.WriteLine("我是美国人。");
}
}
class Japanese : Person
{
public override void SayHello()
{
Console.WriteLine("我是日本人。");
}
}


        在上面代码中首先创建了一个Person的类,并创建了American和Japanese两个派生类。为Person类提高一个SayHello的虚方法,并在每个派生类中重写该方法。创建一个List<Person>对象,然后往里面添加Person、American、Japanese。遍历列表,对每个Person对象调用SayHello方法。

----------------------
ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  多态 面向对象 c#