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

    /*******相与枕藉乎舟中,不知东方之既白*******/
  • 相关阅读:
    Leetcode Plus One
    Leetcode Swap Nodes in Pairs
    Leetcode Remove Nth Node From End of List
    leetcode Remove Duplicates from Sorted Array
    leetcode Remove Element
    leetcode Container With Most Water
    leetcode String to Integer (atoi)
    leetcode Palindrome Number
    leetcode Roman to Integer
    leetcode ZigZag Conversion
  • 原文地址:https://www.cnblogs.com/Mars-0603/p/13932404.html
Copyright © 2011-2022 走看看