范例一:
using System;
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){} //声明manager的构造函数成员变量name同父类employ构造成员变量相同.
public override void StartWork()
{
Console.WriteLine(_name+" assign work to employee"); // 可以直接调用抽象基类的成员变量_name;
}
}
class Sellor:Employee
{
public Sellor(string name):base(name){}
public override void StartWork()
{
Console.WriteLine(_name+" sell products");
}
}
class Test
{
public static void Main()
{
Manager mana=new Manager("zhanag san"); // 如果改写成为Emplolyee mana=new Manager("张山"); 这时候执行结果也是一样的. 因为Employee的类是抽象的,所以他的实例mana无法被赋予类Empolyee的, 所以还是各自的new建立的类.
Sellor sell=new Sellor("wang liu");
Console.WriteLine("start");
mana.StartWork();
sell.StartWork();
}
}
结果:
start
assign work to employee
wang liu sell products
using System;
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){} //声明manager的构造函数成员变量name同父类employ构造成员变量相同.
public override void StartWork()
{
Console.WriteLine(_name+" assign work to employee"); // 可以直接调用抽象基类的成员变量_name;
}
}
class Sellor:Employee
{
public Sellor(string name):base(name){}
public override void StartWork()
{
Console.WriteLine(_name+" sell products");
}
}
class Test
{
public static void Main()
{
Manager mana=new Manager("zhanag san"); // 如果改写成为Emplolyee mana=new Manager("张山"); 这时候执行结果也是一样的. 因为Employee的类是抽象的,所以他的实例mana无法被赋予类Empolyee的, 所以还是各自的new建立的类.
Sellor sell=new Sellor("wang liu");
Console.WriteLine("start");
mana.StartWork();
sell.StartWork();
}
}
结果:
start
assign work to employee
wang liu sell products