黑马程序员-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培训、期待与您交流! ----------------------
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#面向对象之多态
- 黑马程序员————————C#基础知识之面向对象(二)
- 黑马程序员:C#基础篇(四)抽象类、接口、继承与多态
- 黑马程序员-OC之面向对象的三大特性:封装、继承和多态
- 黑马程序员——Java基础---面向对象(多态、异常、包)
- C# 面向对象三大特性:封装、继承、多态
- 实验报告5——C#面向对象进阶(继承与多态)
- 6、黑马程序员-OC面向对象—多态
- 黑马程序员-④面向对象三大特性封装、继承、多态
- 黑马程序员————面向对象之多态
- 黑马程序员---OC面向对象三大特性(封装、继承、多态)
- 黑马程序员—java技术blog—第六篇面向对象_多态概述及基础应用
- 黑马程序员——【Java基础】——面向对象(一)概述、类与对象、继承、抽象类、接口、多态、内部类
- 黑马程序员----Java基础之面向对象(封装 继承 多态)(二)
- 黑马程序员--5--面向对象--多态
- 黑马程序员_Java面向对象3_多态
- 黑马程序员面试题面向对象二(多态,抽象类abstract,接口Interface,内部类,异常Exception,包package,String类,StringBuffer)
- 黑马程序员_java_面向对象_多态
- 关于C#面向对象三个特征:继承,封装,多态的说明
- 黑马程序员_Java基础_面向对象(多态、Object类相关方法)