C#多态性-抽象类和抽象方法的使用

来源:互联网 发布:数控铣床操作与编程 编辑:程序博客网 时间:2024/04/30 01:46

定义抽象类和抽象方法的目的就是为子类提供一种规定,约束子类的行为。C#通过方法重写来实现抽象方法。当一个抽象基类派生一个子类时,子类将继承基类的所有特征,重新实现所有抽象方法。在子类中实现基类的抽象方法,是使用override关键字来重写基类方法。语法如下:

访问修饰符 override 返回类型 方法()
{
//方法体
}

重写抽象方法和重写虚拟方法是一样的。不同的是在基类一种是虚拟方法,另一种是抽象方法。通过override关键字可以在子类中重写方法,这样每种动物的叫声不相同了。

抽象类和抽象方法的作用:

using System;
public abstract class Animal
{
public abstract void Cry();
}

public class Dog: Animal
{
public override void Cry()
{
    Console.WriteLine("狗的叫声是汪汪");
}
}

public class Cat: Animal
{
public override void Cry()
{
    Console.WriteLine("猫的叫声是喵喵");
}
}

public class Sheep: Animal
{
public override void Cry()
{
    Console.WriteLine("羊的叫声是咩咩");
}
}

class Test
{
public static void Main()
{
    Dog mydog = new Dog();
    mydog.Cry();
    Cat mycat = new Cat();
    mycat.Cry();
    Sheep mysheep = new Sheep();
    mysheep.Cry();

}
}

在抽象类Animal中定义了抽象方法Cry(),在派生的子类重写这个方法,添加了具体实现。在Main()方法中,实例化了3个子类对象,访问了各自重写的方法。