多态:就是指不同对象收到相同消息是,会产生不同行为,同一个类在不同的场合下表现出不同的行为特征
多态的作用:把不同的子类对象都当做父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。
实现多态有三种形式:
- 虚方法
- 抽象类
- 接口
下面,使用虚方法,简单实现多态效果
//主函数
class Program
{
static void Main(string[] args)
{
Employee employee = new Employee();
employee.DaKa();
Employee mannger = new Mannger();
mannger.DaKa();
Employee programer = new Programer();
programer.DaKa();
//一个存放对象的数组
Employee[] employees = { employee, mannger, programer };
for (int i = 0; i < employees.Length; i++)
{
employees[i].DaKa();
}
Console.ReadKey();
}
}
//父类:员工类
class Employee
{
public virtual void DaKa()
{
Console.WriteLine("员工打卡");
}
}
//子类①:经理类
class Mannger : Employee
{
public override void DaKa()
{
Console.WriteLine("经理打卡");
}
}
//子类②:程序员类
class Programer : Employee
{
public override void DaKa()
{
Console.WriteLine("程序员打卡");
}
}
<mark>使用抽象类实现多态</mark>
注意:抽象方法没有实体,继承中,必须复写,即override
//主函数
class Program
{
static void Main(string[] args)
{
Animal animal = new Dog();
animal.Bark();
Animal Cat = new Cat();
Cat.Bark();
Console.ReadKey();
}
}
//父类
abstract class Animal
{
public abstract void Bark();
}
//子类①:狗
class Dog : Animal
{
public override void Bark()
{
Console.WriteLine("狗叫");
}
}
//子类②:猫
class Cat : Animal
{
public override void Bark()
{
Console.WriteLine("猫叫");
}
}