C#抽象类

在C#中使用关键字 abstract 来定义抽象类和抽象方法。


First ——abstract 和virtual关键字的区别与联系

联系

它们有一个共同点:如果用来修饰方法,前面必须添加public,要不然就会出现编译错误:虚拟方法或抽象方法是不能私有的。毕竟加上virtual或abstract就是让子类重新定义的,而private成员是不能被子类访问的。

区别1

  virtual(虚拟的)

这表是这个方法式有方法实体的,即这个方法可以像一般方法使用

abstract

(抽象的)

表示这个方法只有一些基础的构架,必须要在子类中将这个方法写出这个方法的实体以后,这个方法才能像正常的方法一样使用,这样做的目的:比如我只是在构架整个软件框架的时候想到要有这么一个功能,但是还没有具体想好这个功能怎么实现,那么就可以先写一个抽象方法,待以后有灵感的时候再实现

区别2

virtual可以被子类重写,不重写也可以像正常函数一样使用,如果重写了virtual修饰的方法,前面必须添加override

而abstract必须被子类重写


second——抽象类

"一个包含一个或多个纯虚函数的类叫抽象类,抽象类不能被实例化,进一步一个抽象类只能通过接口和作为其它类的基类使用."

1 抽象方法可以继承于接口(当然也可以单独定义),一个抽象类必须为所有的接口成员提供实现


2.抽象类不能被实例化


3一个包含抽象方法的类必然是抽象类,但是抽象类里面可以有非抽象方法,抽象方法的声明只能在抽象类中。

一个抽象类可以包含抽象和非抽象方法,当一个类继承于抽象类,那么这个派生类必须实现所有的的基类抽象方法。

但是通过声明派生类也为抽象,我们可以避免所有或特定的虚方法的实现,(就是A是抽象类,B继承A,只要B也是抽象类,那么B就不必要实现A中的所有抽象方法)


3.不能把抽象类用密封(sealed)来修饰,因为抽象类就是用来被继承,然后在继承的子类中实现方法,sealed关键字是不让这个类被继承。


4抽象类可以包含抽象方法和抽象属性,也可以包含普通的类成员。

从抽象类派生的非抽象类必须实现全部的抽象方法和抽象属性,包括继承来的

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值