用abstract,virtual ,interface三种方法做同一个例子
virtual:
using
System;
using System.Collections.Generic;
using System.Text;
namespace Test
... {
class Employee
...{
protected string _name;
public Employee() ...{ }
public Employee(string name)
...{
_name = name;
}
public virtual void StartWork()
...{
Console.WriteLine(_name+"Start Work");
}
}
class Manager:Employee
...{
public Manager(string name):base(name)...{}
public override void StartWork()
...{
base.StartWork();
Console.WriteLine("Orders to staff");
}
}
class Secretary:Employee
...{
public Secretary(string name):base(name)...{}
public override void StartWork()
...{
base.StartWork();
Console.WriteLine("Assist the Manager");
}
}
class Seller:Employee
...{
public Seller(string name):base(name)...{}
public override void StartWork()
...{
base.StartWork();
Console.WriteLine("Product sales");
}
}
class Accountant : Employee
...{
public Accountant(string name) : base(name) ...{ }
public override void StartWork()
...{
base.StartWork();
Console.WriteLine("Manage finance of company");
}
}
class PolymorphismTest
...{
static void Main()
...{
Employee[] emp=new Employee[5];
emp[0] = new Manager("Manager");
emp[1] = new Secretary("Secretary");
emp[2] = new Seller("Seller1");
emp[3] = new Seller("Sell2");
emp[4] = new Accountant("Accountant");
Console.WriteLine("8 o'colck, Start Work");
foreach (Employee e in emp)
...{
e.StartWork();
}
}
}
}
using System.Collections.Generic;
using System.Text;
namespace Test
... {
class Employee
...{
protected string _name;
public Employee() ...{ }
public Employee(string name)
...{
_name = name;
}
public virtual void StartWork()
...{
Console.WriteLine(_name+"Start Work");
}
}
class Manager:Employee
...{
public Manager(string name):base(name)...{}
public override void StartWork()
...{
base.StartWork();
Console.WriteLine("Orders to staff");
}
}
class Secretary:Employee
...{
public Secretary(string name):base(name)...{}
public override void StartWork()
...{
base.StartWork();
Console.WriteLine("Assist the Manager");
}
}
class Seller:Employee
...{
public Seller(string name):base(name)...{}
public override void StartWork()
...{
base.StartWork();
Console.WriteLine("Product sales");
}
}
class Accountant : Employee
...{
public Accountant(string name) : base(name) ...{ }
public override void StartWork()
...{
base.StartWork();
Console.WriteLine("Manage finance of company");
}
}
class PolymorphismTest
...{
static void Main()
...{
Employee[] emp=new Employee[5];
emp[0] = new Manager("Manager");
emp[1] = new Secretary("Secretary");
emp[2] = new Seller("Seller1");
emp[3] = new Seller("Sell2");
emp[4] = new Accountant("Accountant");
Console.WriteLine("8 o'colck, Start Work");
foreach (Employee e in emp)
...{
e.StartWork();
}
}
}
}
abstract:
using
System;
using System.Collections.Generic;
using System.Text;
namespace AbstractPolymorphismTest
... {
abstract class Employee
...{
protected string _name;
protected Employee() ...{ }
protected Employee(string name)
...{
_name = name;
}
public abstract void StartWork();
}
class Manager : Employee
...{
public Manager(string name) : base(name) ...{ }
public override void StartWork()
...{
Console.WriteLine(_name+"Orders to staff");
}
}
class Secretary : Employee
...{
public Secretary(string name) : base(name) ...{ }
public override void StartWork()
...{
Console.WriteLine(_name+"Assist the Manager");
}
}
class Seller : Employee
...{
public Seller(string name) : base(name) ...{ }
public override void StartWork()
...{
Console.WriteLine(_name+"Product sales");
}
}
class Accountant : Employee
...{
public Accountant(string name) : base(name) ...{ }
public override void StartWork()
...{
Console.WriteLine(_name+"Manage finance of company");
}
}
class AbstractPolymorphismTest
...{
static void Main()
...{
Employee[] emp = new Employee[5];
emp[0] = new Manager("Manager");
emp[1] = new Secretary("Secretary");
emp[2] = new Seller("Seller1");
emp[3] = new Seller("Sell2");
emp[4] = new Accountant("Accountant");
Console.WriteLine("8 o'colck, Start Work");
foreach (Employee e in emp)
...{
e.StartWork();
}
}
}
}
using System.Collections.Generic;
using System.Text;
namespace AbstractPolymorphismTest
... {
abstract class Employee
...{
protected string _name;
protected Employee() ...{ }
protected Employee(string name)
...{
_name = name;
}
public abstract void StartWork();
}
class Manager : Employee
...{
public Manager(string name) : base(name) ...{ }
public override void StartWork()
...{
Console.WriteLine(_name+"Orders to staff");
}
}
class Secretary : Employee
...{
public Secretary(string name) : base(name) ...{ }
public override void StartWork()
...{
Console.WriteLine(_name+"Assist the Manager");
}
}
class Seller : Employee
...{
public Seller(string name) : base(name) ...{ }
public override void StartWork()
...{
Console.WriteLine(_name+"Product sales");
}
}
class Accountant : Employee
...{
public Accountant(string name) : base(name) ...{ }
public override void StartWork()
...{
Console.WriteLine(_name+"Manage finance of company");
}
}
class AbstractPolymorphismTest
...{
static void Main()
...{
Employee[] emp = new Employee[5];
emp[0] = new Manager("Manager");
emp[1] = new Secretary("Secretary");
emp[2] = new Seller("Seller1");
emp[3] = new Seller("Sell2");
emp[4] = new Accountant("Accountant");
Console.WriteLine("8 o'colck, Start Work");
foreach (Employee e in emp)
...{
e.StartWork();
}
}
}
}
interface:
using
System;
using System.Collections.Generic;
using System.Text;
namespace InterfacePolymorphismTest
... {
interface IEmployee
...{
void StartWork();
}
class Manager : IEmployee
...{
private string _name;
public Manager(string name)
...{
_name = name;
}
public void StartWork()
...{
Console.WriteLine(_name + "Orders to staff");
}
}
class Secretary : IEmployee
...{
private string _name;
public Secretary(string name)
...{
_name = name;
}
public void StartWork()
...{
Console.WriteLine(_name + "Assist the Manager");
}
}
class Seller : IEmployee
...{
private string _name;
public Seller(string name)
...{
_name = name;
}
public void StartWork()
...{
Console.WriteLine(_name + "Product sales");
}
}
class Accountant : IEmployee
...{
private string _name;
public Accountant(string name)
...{
_name = name;
}
public void StartWork()
...{
Console.WriteLine(_name + "Manage finance of company");
}
}
class InterfacePolymorphismTest
...{
static void Main()
...{
IEmployee[] emp = new IEmployee[5];
emp[0] = new Manager("Manager");
emp[1] = new Secretary("Secretary");
emp[2] = new Seller("Seller1");
emp[3] = new Seller("Sell2");
emp[4] = new Accountant("Accountant");
Console.WriteLine("8 o'colck, Start Work");
foreach (IEmployee e in emp)
...{
e.StartWork();
}
}
}
}
using System.Collections.Generic;
using System.Text;
namespace InterfacePolymorphismTest
... {
interface IEmployee
...{
void StartWork();
}
class Manager : IEmployee
...{
private string _name;
public Manager(string name)
...{
_name = name;
}
public void StartWork()
...{
Console.WriteLine(_name + "Orders to staff");
}
}
class Secretary : IEmployee
...{
private string _name;
public Secretary(string name)
...{
_name = name;
}
public void StartWork()
...{
Console.WriteLine(_name + "Assist the Manager");
}
}
class Seller : IEmployee
...{
private string _name;
public Seller(string name)
...{
_name = name;
}
public void StartWork()
...{
Console.WriteLine(_name + "Product sales");
}
}
class Accountant : IEmployee
...{
private string _name;
public Accountant(string name)
...{
_name = name;
}
public void StartWork()
...{
Console.WriteLine(_name + "Manage finance of company");
}
}
class InterfacePolymorphismTest
...{
static void Main()
...{
IEmployee[] emp = new IEmployee[5];
emp[0] = new Manager("Manager");
emp[1] = new Secretary("Secretary");
emp[2] = new Seller("Seller1");
emp[3] = new Seller("Sell2");
emp[4] = new Accountant("Accountant");
Console.WriteLine("8 o'colck, Start Work");
foreach (IEmployee e in emp)
...{
e.StartWork();
}
}
}
}