C#抽象类
来源:互联网 发布:水手怕水 知乎 编辑:程序博客网 时间:2024/06/06 09:07
在C#中使用关键字 abstract 来定义抽象类和抽象方法。
First ——abstract和virtual关键字的区别与联系
联系
它们有一个共同点:如果用来修饰方法,前面必须添加public,要不然就会出现编译错误:虚拟方法或抽象方法是不能私有的。毕竟加上virtual或abstract就是让子类重新定义的,而private成员是不能被子类访问的。
区别1
virtual(虚拟的)
这表是这个方法式有方法实体的,即这个方法可以像一般方法使用
abstract
(抽象的)
表示这个方法只有一些基础的构架,必须要在子类中将这个方法写出这个方法的实体以后,这个方法才能像正常的方法一样使用,这样做的目的:比如我只是在构架整个软件框架的时候想到要有这么一个功能,但是还没有具体想好这个功能怎么实现,那么就可以先写一个抽象方法,待以后有灵感的时候再实现
区别2
virtual可以被子类重写,不重写也可以像正常函数一样使用,如果重写了virtual修饰的方法,前面必须添加override
而abstract必须被子类重写
"一个包含一个或多个纯虚函数的类叫抽象类,抽象类不能被实例化,进一步一个抽象类只能通过接口和作为其它类的基类使用."
2.抽象类不能被实例化。
一个抽象类可以包含抽象和非抽象方法,当一个类继承于抽象类,那么这个派生类必须实现所有的的基类抽象方法。
但是通过声明派生类也为抽象,我们可以避免所有或特定的虚方法的实现,(就是A是抽象类,B继承A,只要B也是抽象类,那么B就不必要实现A中的所有抽象方法)
3.不能把抽象类用密封(sealed)来修饰,因为抽象类就是用来被继承,然后在继承的子类中实现方法,sealed关键字是不让这个类被继承。
4抽象类可以包含抽象方法和抽象属性,也可以包含普通的类成员。
从抽象类派生的非抽象类必须实现全部的抽象方法和抽象属性,包括继承来的
- C#抽象类、抽象方法
- C# 抽象类总结
- C#抽象类
- C#抽象类
- C#抽象类总结
- C# 抽象类
- C#抽象类
- C#抽象类
- C#抽象类
- C#抽象类 abstract
- 有关C#抽象类
- C#抽象类
- C# 接口、抽象类
- C#中的抽象类
- C#抽象类
- C#抽象类
- C#之抽象类
- C# 抽象类
- jsoup在jre6和jre7的不同表现
- Linux管道及重定向
- Codeforces Round #198 (Div. 2) C. Tourist Problem (数学+dp)
- CSDN的SDCC大会(2013)中使用的PPT分享
- QT 5.0.2 VS2010开发环境搭建
- C#抽象类
- 榜单
- boost::asio 的同步方式
- UVALive 3890 Most Distant Point from the Sea(凸包最大内接圆)
- 在python中引入rabbitmq消息中间件
- python学习九:SocektServer学习、bisect、list的sort详解、清空字典的两种方法、zip初探
- boost::asio的异步方式
- NOSQL启蒙: What? Why? When?
- 你必须非常努力,才能看起来毫不费力