實現多態的兩種方式 接口和抽象類
抽象類
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 + "我是司機的乘客");
}
}
}