在设计一个方法时,通常希望该方法具备一定的通用性,例如要实现一个动物叫声的方法,由于每种动物的叫声是不同的,因此可以在方法接受一个动物类型的参数,当传入猫类对象时就发出猫类的叫声,传入犬类对象时就发出犬类的叫声。因此,可以通过多态的方式实现这种功能。所谓多态就是调用同一个方法时,由于传入的参数类型不同而导致执行效果各异的现象。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp_6_22
{
internal class Program
{
static void Main(string[] args)
{
Animal dog=new Dog();
dog.Display();
dog.Sound();
dog.Fly();
dog.Swim();
Console.WriteLine();
Animal cat = new Cat();
cat.Display();
cat.Sound();
cat.Fly();
cat.Swim();
Console.ReadKey();
}
}
}
动物行为
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp_6_22
{
public abstract class Animal
{
//动物名字
public string AnimalName { get; set; }
public void Display()
{
Console.WriteLine($"名称:{AnimalName}");
}
//行为
public abstract void Sound();
public abstract void Fly();
public abstract void Swim();
}
}
猫
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp_6_22
{
public class Cat : Animal
{
public Cat()
{
AnimalName = "汤姆";
}
public override void Fly()
{
Console.WriteLine("汤姆不会飞");
}
public override void Sound()
{
Console.WriteLine("汤姆喵喵叫");
}
public override void Swim()
{
Console.WriteLine("汤姆不会游");
}
}
}
狗
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp_6_22
{
public class Dog : Animal
{
public Dog()
{
AnimalName = "斯派克";
}
public override void Fly()
{
Console.WriteLine("斯派克不会飞");
}
public override void Sound()
{
Console.WriteLine("斯派克汪汪叫");
}
public override void Swim()
{
Console.WriteLine("斯派克会狗刨");
}
}
}