您的位置:首页 > 其它

面向对象设计之:多态

2009-06-17 08:32 363 查看
 

实现多态的两种方式 接口和抽象类

抽象类

using System;
using System.Collections.Generic;
using System.Text;

namespace Eric.DotNet
{
class Program
{
static void Main(string[] args)
{
Person aPerson = null;
aPerson = new PersonAtHome();
aPerson.Name = "Eric liu";
aPerson.Age = 27;
aPerson.DoWork();
Console.Write("/r/n==========================================/r/n");
aPerson = new PersonAtSchool();
aPerson.DoWork();
Console.Write("/r/n==========================================/r/n");

Console.Read();
}
}

abstract class Person
{
private string _name;
private Int32 _age;

public string Name
{
set { this._name = value; }
get { return this._name; }
}

public Int32 Age
{
get { return this._age; }
set { this._age = value; }
}

public abstract void DoWork();
}

interface IPerson
{

}

class PersonAtHome : Person
{
public override void DoWork()
{
Console.WriteLine(Name + " 我是爸爸妈妈的孩子");
}
}

class PersonAtSchool : Person
{
public override void DoWork()
{
Console.WriteLine(Name + "我是老师的学生");
}
}

class PersonAtBus : Person
{
public override void DoWork()
{
Console.WriteLine(Name + "我是司机的乘客");
}
}
}

接口

using System;
using System.Collections.Generic;
using System.Text;

namespace Eric.DotNet
{
class Program
{
static void Main(string[] args)
{
IPerson aPerson = null;
aPerson = new PersonAtHome();
aPerson.Name = "Eric liu";
aPerson.Age = 27;
aPerson.DoWork();
Console.Write("/r/n==========================================/r/n");
aPerson = new PersonAtSchool();
aPerson.DoWork();
Console.Write("/r/n==========================================/r/n");

Console.Read();
}
}

interface IPerson
{
string Name
{
get;
set;
}

Int32 Age
{
get;
set;
}

void DoWork();
}

class PersonAtHome : IPerson
{
private string _name;
private Int32 _age;

public string Name
{
get { return this._name; }
set { this._name = value; }
}

public Int32 Age
{
get { return this._age; }
set { this._age = value; }
}

public void DoWork()
{
Console.WriteLine(Name+" 我是爸爸妈妈的孩子");
}
}

class PersonAtSchool : IPerson
{
private string _name;
private Int32 _age;

public string Name
{
get { return this._name; }
set { this._name = value; }
}

public Int32 Age
{
get { return this._age; }
set { this._age = value; }
}

public void DoWork()
{
Console.WriteLine(Name + "我是老师的学生");
}
}

class PersonAtBus : IPerson
{
private string _name;
private Int32 _age;

public string Name
{
get { return this._name; }
set { this._name = value; }
}

public Int32 Age
{
get { return this._age; }
set { this._age = value; }
}

public void DoWork()
{
Console.WriteLine(Name + "我是司机的乘客");
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: