C# 学习笔记 多态(二)抽象类

  多态是类的三大特性之一,抽象类又是多态的实现方法之一。抽象类是什么呢,若是把虚方法比做一个盛有纯净水的杯子,那么此时的“纯净水”就是事先定义好的方法,咱们能够根据不一样的需求来改变杯子中所事先盛放的是“纯净水”仍是“咖啡”。可是抽象类呢,他更像是一个空的杯子,放在消毒柜中,让有须要的人本身去拿,去决定这个杯子里装什么。这个“杯子”是抽象方法,存放杯子的“消毒柜”是抽象类。ide

  咱们用abstract来声明或定义一个抽象类或抽象方法,spa

//定义一个抽象类
[访问权限] abstract class [类名]
{
    
}

//定义一个抽象方法
[访问权限] abstract [返回类型] [方法名]([参数表]);

  这里须要注意的是:code

    抽象类中能够有抽象方法,也能够没有抽象方法。(“消毒柜”能够存放杯子,也能够存放碗筷)blog

    抽象方法必须存在于抽象类中,而且这个方法不可拥有方法体。(首先杯子须要放在一个干净能够消毒的地方,其次这个杯子是没有被用过的,否则恐怕没有客人想用这个杯子作什么。。)继承

    抽象类没法实例化,只能被继承于他的派生类实例化,也就是说抽象类的存在就是为了被继承。it

    抽象类中的抽象成员只能在其派生类中使用override关键字进行实现。io

  抽象类和抽象方法的使用:class

//定义一个柜子,柜子里有杯子(此时没法进行实例化)
abstract class Cabinet
{
    public abstract void Cup();
}



//第一类顾客喜欢喝牛奶
class Customer1:Cabinet
{
    public override void Cup()
    {
        Console.WriteLine("牛奶");
    }
}



//第二类顾客喜欢喝汽水
class Customer2:Cabinet
{
    public override void Cup()
    {
        Console.WriteLine("汽水");
    }
}

 

   将派生类实例化而且进行结果验证:权限

Cabinet a = new Cabinet();  //会引发不能实例化抽象类的错误

Customer1 a = new Customer1();
a.Cup();

输出结果:
牛奶

Customer2 b = new Customer2();
b.Cup();

输出结果:
汽水

 

  这是我理解的抽象类,新手上路,有不对的地方还请各位老司机指出,对本身的收获进行必定的总结,若是能帮到和我同样的新手就再好不过了。晚安世界!方法

相关文章
相关标签/搜索