zoukankan      html  css  js  c++  java
  • 【概念】抽象类、密封类、接口、虚函数

    一、抽象类

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

    成员被标示成abstract,或被包含进一个抽象类,必须被其派生类实现。

    1、抽象类、抽象属性、抽象方法:https://www.cnblogs.com/adawoo/p/6434009.html

    2、抽象类及其方法的学习:https://www.cnblogs.com/flyinthesky/archive/2008/06/18/1224774.html

    二、虚函数

    在某基类中声明 virtual 并在一个或多个派生类中被重新定义的成员函数称为虚函数。

    虚函数的作用就是实现多态性(Polymorphism),多态性是将接口与实现进行分离

    1、C#中的虚函数virtual:https://www.cnblogs.com/gygg/p/11556005.html

    2、https://www.cnblogs.com/jiajiayuan/archive/2011/09/14/2176015.html

    在基类中声明关键字virtual,就可以在其派生类中通过关键字override重写该函数。

    重写后的virtual函数依旧是virtual函数。

    由于virtual只对类中的实例函数成员有意义,所以成员字段和静态函数都不能声明为virtual,也不能与override和abstract一起用。

    三、接口

    1、基本概念

    定义:接口是一种约束形式,其中只包括成员定义,不包含成员实现的内容。
    目的:接口的主要目的是为不相关的类提供通用的处理服务,由于C#中只允许树形结构中的单继承,即一个类只能继承一个父类,所以接口是让一个类具有两个以上基类的唯一方式。 
    声明:接口声明的方式与声明类的方式相似,但使用的关键字是interface,而不是 class。
    接口只包含方法、属性、索引器和事件的签名。方法的实现是在实现接口的类中完成的。

    https://www.runoob.com/csharp/csharp-interface.html

    百度百科:https://baike.baidu.com/item/接口/15422203?fr=aladdin

    注意:
    不允许使用访问修饰符 public、private、protected 或 internal。所有的接口成员都必须是公共的;
    接口成员不能包含代码实体;
    接口成员不能定义字段成员;
    接口成员不能用关键字 static、virtual、abstract或 sealed 来定义;
    类型定义成员是禁止的。
    如果要隐藏继承了基接口的成员,可以用关键字new来定义它们.
     
    2、多继承示例

    3、抽象类和接口有哪些区别?

    https://www.zhihu.com/question/34165521

    (一)相同点

    1. 都不能被直接实例化,都可以通过继承实现其抽象方法。

    2. 都是面向抽象编程的技术基础,实现了诸多的设计模式。

    (二) 不同点

    1. 接口支持多继承;抽象类不能实现多继承。

    2. 接口只能定义抽象规则;抽象类既可以定义规则,还可能提供已实现的成员。

    3. 接口是一组行为规范;抽象类是一个不完全的类,着重族的概念。

    4. 接口可以用于支持回调;抽象类不能实现回调,因为继承不支持。

    5. 接口只包含方法、属性、索引器、事件的签名,但不能定义字段和包含实现的方法;抽象类可以定义字段、属性、包含有实现的方法。

    6. 接口可以作用于值类型和引用类型;抽象类只能作用于引用类型。例如,Struct就可以继承接口,而不能继承类。


    作者:Clive DM
    链接:https://www.zhihu.com/question/34165521/answer/5812124

    四、密封类

    https://www.cnblogs.com/quliang/p/6664294.html

    /*******相与枕藉乎舟中,不知东方之既白*******/
  • 相关阅读:
    CodeSmith中SchemaExplorer类详解
    配置 TransactSQL 调试器
    获取SQL所有数据库名、所有表名、所有字段名、表字段长度
    SQL SERVER数据类型与C#数据类型对照表
    C# orm linq 真的不错
    游戏外挂教程
    RDLC钻取式报表开发
    脚本整理
    访问Exchange Mail
    本人开发的带提示的TextBox控件
  • 原文地址:https://www.cnblogs.com/Mars-0603/p/13932404.html
Copyright © 2011-2022 走看看