继承之抽象类

1,什么是抽象类

      

     注意:1)抽象类在任何时候都绝不允许实例化的,(理解它:其中一个比较好理解的地方就是,如果抽象类中包含了抽象方法,由于抽象方法是虚拟的,没有方法体,那么如果允许实例化它,这在调用虚拟方法时,编译器并不知道这个方法到底怎么执行,其实,我们设计抽象类,只是纯粹的为了抽象,而不是实例化它,抽象方法比虚方法更抽象,至少虚方法还有一个默认的实现,而它只是一个约定,除此之外什么都没有)

 

2,适合使用抽象类

    

    举个例子来说:

    我的项目里面有飞机(Plane)、轮船(Ship)、人(Person),其中:业务需求就是人乘坐飞机或者轮船去某地

    开始考虑时,我们很容易就联系到,Person使用的交通工具是未定的。

   

 

3,如何设计抽象类

     抽象类的设计最根本的目的: 是在类的继承层次组织上的一个高度的抽象,并提供利于扩展到实现,并使用多态的方式来让系统具有柔性

    1)正确设计构造函数

       不要把构造函数设计成public或者protected internal, 当然这里我们会问:既然C#规范中已经限制了编译器是无法编译对抽象类的实例化,那这里对构造函数的说明是不是多此一举呢?(答案:不是,因为他其实还是完成了它本质的工作,即:一些初始化工作)再改造一下上面的例子

      

    2)正确设计功能和扩展点

       因为抽象类的设计目的就是扩展,那么扩展点的设计是很重要的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值