接口继承与实现继承

【C++】多态(上) 多态 | 虚函数 | 重写 | final、override | 接口继承与实现继承 | 抽象类 若子类定义了一个和父类的虚函数 一模一样的虚函数,那么称子类中的虚函数重写 / 覆盖了父类的虚函数。(拥有相同的名字、返回值、形参列表)重写是针对虚函数的概念。普通函数是没有重写的说法的。 阅读详情

接口继承与实现继承
MoaKap
所谓接口继承,就是派生类只继承函数的接口,也就是声明;而实现继承,就是派生类同时继承函数的接口和实现。
我们都很清楚C++中有几个基本的概念,虚函数、纯虚函数、非虚函数。
虚函数:
虚函数是指一个类中你希望重载的成员函数,当你用一个基类指针或引用指向一个继承类对象的时候,你调用一个虚函数,实际调用的是继承类的版本。——MSDN
虚函数用来表现基类和派生类的成员函数之间的一种关系. 
+`%K i;l"Z @2J-^5\0虚函数的定义在基类中进行,在需要定义为虚函数的成员函数的声明前冠以关键字 virtual. 航大博客-中国民航大学个人门户 N-D&{'d t0\
基类中的某个成员函数被声明为虚函数后,此虚函数就可以在一个或多个派生类中被重新定义. 航大博客-中国民航大学个人门户;P,q4B%Q2g
在派生类中重新定义时,其函数原型,包括返回类型,函数名,参数个数,参数类型及参数的先后顺序,都必须与基类中的原型完全相同. 
A l z&P­Z Y7m0虚函数是重载的一种表现形式,是一种动态的重载方式.

纯虚函数:
纯虚函数在基类中没有定义,它们被初始化为0。 
任何用纯虚函数派生的类,都要自己提供该函数的具体实现。 
定义纯虚函数 
virtual void fun(void) = 0;
非虚函数:
一般成员函数,无virtual关键字修饰。

至于为什么要定义这些函数,我们可以将虚函数、纯虚函数和非虚函数的功能与接口继承与实现继承联系起来:
声明一个纯虚函数(pure virtual)的目的是为了让派生类只继承函数接口,也就是上面说的接口继承。
纯虚函数一般是在不方便具体实现此函数的情况下使用。也就是说基类无法为继承类规定一个统一的缺省操作,但继承类又必须含有这个函数接口,并对其分别实现。但是,在C++中,我们是可以为纯虚函数提供定义的,只不过这种定义对继承类来说没有特定的意义。因为继承类仍然要根据各自需要实现函数。
通俗说,纯虚函数就是要求其继承类必须含有该函数接口,并对其进行实现。是对继承类的一种接口实现要求,但并不提供缺省操作,各个继承类必须分别实现自己的操作。
声明非纯虚函数(impure virtual)的目的是让继承类继承该函数的接口和缺省实现。
与纯虚函数唯一的不同就是其为继承类提供了缺省操作,继承类可以不实现自己的操作而采用基类提供的默认操作。
声明非虚函数(non-virtual)的目的是为了令继承类继承函数接口及一份强制性实现。
相对于虚函数来说,非虚函数对继承类要求的更为严格,继承类不仅要继承函数接口,而且也要继承函数实现。也就是为继承类定义了一种行为。

总结:
纯虚函数:要求继承类必须含有某个接口,并对接口函数实现。
虚函数:继承类必须含有某个接口,可以自己实现,也可以不实现,而采用基类定义的缺省实现。
非虚函数:继承类必须含有某个接口,必须使用基类的实现。

本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/ljinddlj/archive/2007/12/07/1922189.aspx

C# 接口与抽象类的继承与实现机制深度解 本文深入探讨了C#中接口和抽象类的关键特性:1)接口可以继承其他接口,支持多重继承;2)抽象类能够实现接口,既可完全也可部分实现接口成员;3)抽象类可以继承实体类,扩展其功能。通过代码示例和对比表格,文章分析了三种关系的语法特点、使用场景及最佳实践。建议接口保持小巧、抽象类提供部分实现,并谨慎使用抽象类继承实体类。文章还提及C#8.0的默认接口实现新特性,为面向对象设计提供了全面指导。 阅读详情

相关推荐

Day13Java接口的多实现与继承

学习目标 1.常量 2.Java接口的多实现 3.Java接口的多继承 4.Java中的权限修饰符 学习内容 一:常量 常量 接口中是可以定义成员变量 但是必须用 public static final 关键字修饰 从效果上来看 就相当于是一个常量 1、接口中的常量 用public static final 来修饰,是可以省略这个三个关键字的 2、相当于是常量,因此只能在初始化的时候进行赋值,后面不能更改 3、建议命名格式用大写字母加下划线 例如`: public class Demo01Interface

m0_55689562的博客 287

接口继承和实现继承(pure-virtual,virtual,non-virtual)

区分接口继承和实现继承 前言 身为class 设计者,有时候你会希望derived classes只继承成员函数的接口(也 就是声明) ;有时候你又会希望derived classes 同时继承函数的接口和实现,但又 希望能够覆写(override) 它们所继承的实现;又有时候你希望derived classes同时继承函数的接口和实现,并且不允许覆写任何东西。 为了更好地感觉上述选择之间的差异,让我们考虑一个展现绘图程序中各种几何形状的class继承体系: class Shape { public: vi

weixin_44919944的博客 671

Java接口与抽象类的实现与继承

本章介绍了Java中接口的实现与继承,包括接口如何定义、如何实现多个接口、接口与抽象类的区别以及接口方法的隐式修饰符。通过具体的代码示例,说明了接口方法的协变性、接口的静态成员以及隐式修饰符的应用。同时,解释了接口中方法的访问级别以及继承接口的规则。

weixin_28872035的博客 339

[C++]接口继承与实现继承

 接口继承与实现继承MoaKap所谓接口继承,就是派生类只继承函数的接口,也就是声明;而实现继承,就是派生类同时继承函数的接口和实现。我们都很清楚C++中有几个基本的概念,虚函数、纯虚函数、非虚函数。虚函数:虚函数是指一个类中你希望重载的成员函数,当你用一个基类指针或引用指向一个继承类对象的时候,你调用一个虚函数,实际调用的是继承类的版本。——MSDN虚函数用来表现基类

MoaKap的专栏 1万+

小白学习图像处理6——Canny边缘检测算法原理

目录结构一、高斯滤波二、梯度计算1、原理2、代码如下三、非极大值抑制三、双阈值检测四、matlab 的 edge函数五、总结 Canny边缘检测算法主要步骤:高斯滤波、梯度计算、非极大值抑制和双阈值检测。 一、高斯滤波   使用高斯滤波的目的是平滑图像,滤除图像中的部分噪声(因为微分算子对噪声很敏感)。高斯滤波具体办法是生成一个高斯模板,使用卷积进行时域滤波: img = im2double(im...

我有两颗糖 7791

Xilinx Vivado vitis IDE launch Failed \ Web installer client Obsolete 怎么办

Xilinx vitis_IDE failed Web installer client Obsolete

weixin_44820962的博客 8644

如何实现接口继承与实现继承的区别?C++

一个常见的模式是,基类提供接口(通过纯虚函数)并实现一些功能,而派生类则实现其他的功能或重写基类的某些方法。实现继承指的是派生类从基类继承功能实现,基类提供了具体的成员函数实现,派生类可以直接使用这些实现,或者重写这些实现。接口继承的目的是为派生类提供一个统一的接口约定,所有派生类必须提供这些接口函数的具体实现。:基类提供了具体的成员函数实现,派生类可以直接使用这些实现,也可以选择重写基类的成员函数。:用于复用代码,派生类继承了基类的具体实现和成员变量,能够直接使用或修改这些实现。

weixin_73931631的博客 1071

stm32最小系统_完成一个最小FOC矢量控制系统所需的基本模块和功能配置

当我们读懂 FOC 矢量控制的基本原理之后,便迫不及待的想动手尝试,去实现一个矢量控制系统,让电机先转起来,有一个直观的感受。因此,我们需要设计实现一个矢量控制的最小系统,具备矢量控制的基本功能,满足电机矢量运行的基本条件。首先,看一下矢量控制的基本架构:矢量控制架构如上图所描述,矢量控制系统包括实时电流的采集、clarke 变换、park 变换、SVPWM 、实时角度的反馈和计算以及电流环和速...

weixin_39524048的博客 1784

C++ 面向对象三大特性——多态

面向对象三大特性的,封装,继承,多态,今天我们研究研究C++的多态。多态的概念:通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会 产生出不同的状态。

qq_63943454的博客 2110

Diffusion、VAE与GAN:三大生成模型的原理对比与应用场景解析

本文深入解析了Diffusion、VAE与GAN三大生成模型的核心原理与特性。Diffusion模型通过逆向去噪过程实现高质量图像生成,但计算成本较高;VAE擅长学习概率潜空间,训练稳定但图像偏模糊;GAN通过对抗训练生成锐利图像,但存在模式崩溃风险。文章结合实战场景,为图像生成、修复、超分辨率等任务提供了清晰的模型选择指南。

weixin_29063979的博客 343

ubuntu18.04安装R——无法连接上 dl.google.com:80 (6.6.6.6),连接超时&&E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。

安装R的时候,sudo apt update 的时候出现错误: 查资料要修改/etc/apt/sources.list.d/google-chrome.list 文件 原来是: deb http://dl.google.com/linux/chrome/deb/ stable main 改为: deb [arch=amd64] http://dl.google.com/linux/chrom...

许希律的博客 4350

实现接口继承与实现继承的区别

当调用一个虚函数(在多态场景下的函数)时,程序需要通过对象的虚函数表指针找到对应的函数地址,这个间接的查找过程会带来一定的性能开销,相比于直接调用非虚函数(在编译阶段就能确定函数地址的函数)会慢一些。接口可以被多个类实现,一个类也可以实现多个接口,这提供了高度的灵活性,能够实现多继承的效果(在一些单继承语言中模拟多继承行为)。指的是一个类(子类)继承另一个类(父类)的成员(包括属性和方法),并且可以选择性地重写(override)父类的方法。在继承过程中,子类可以继承父类的访问修饰符允许的成员变量和方法。

2302_81041084的博客 1098

做蛋白组学数据分析,竟然还不会使用DIA-NN软件,走过路过不要错过,进来免费学习!!!

蛋白组学分析工具DIA-NN使用

wcy1995427的博客 9866

接口继承与实现继承的区别

接口继承:主要关注的是派生类对基类的函数签名(函数名、参数列表、返回值类型)的继承。在接口继承中,派生类继承了基类的纯虚函数(函数声明后有= 0)或者虚函数的接口。但是我们只是拥有了这个接口,这意味着派生类必须重新定义这些虚函数来提供具体的实现,它规定了派生类应该具有什么样的行为接口。目标:定义行为规范,强制子类遵循某种协议,但不提供具体实现。内容仅继承方法的声明(签名),不继承实现。子类必须实现所有继承的接口方法。特点强调“能做什么”(多态性)。支持多继承(如一个类可实现多个接口)。

2301_81198475的博客 525

Stable Diffusion 模型分享:Beautiful Realistic Asians(美丽真实的亚洲人)

Beautiful Realistic Asians(BRA)模型是由作者自己训练而成的一个独立模型,它是一个真实模型,并且是一个针对亚洲人训练的模型,可以生成非常漂亮的亚洲小姐姐。条目内容类型大模型基础模型SD 1.5来源CIVITAI作者文件名称文件大小1.99GB。

水滴的博客 2157

SpringBoot+Vue+kkFileView实现文档管理(文档上传、下载、在线预览)

上面在使用OpenOffice实现doc、excel、ppt等文档的管理和预览。除此之外可用kkFileView实现包括且更多文档的预览。

BADAO_LIUMANG_QIZHI的博客 1万+

Java中类与类的单继承、类与接口的多实现、接口与接口的多继承

1、类与类的单继承 这是父类代码: 这是子类代码: 调试代码及结果:    2、类与接口的多实现 这是三个接口:      这是实现类: 调试代码及结果:  3、接口与接口的多继承 这是三个接口:      这是实现类: 调试代码及结果: 总结:从上面的结论可以看出类可以单继承类和多实现接口,接口与接口的多继承和类多实现接口效果...

zhoukewei_1650的博客 4398

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Java中实现接口与继承的区别

** Java中接口与继承的区别 ** 在Java中,接口的实现和继承的实现很类似的,写法上是几乎是一致的,就是关键字这一部分不一样,即接口使用的关键字为implements,而继承使用的关键字为extends。代码如下: 接口的代码: public class ButtonListener implements ActionListener {} 接口类型写法与解释: //事件处理类 //实现接口一定要实现(重写)接口中所有的抽象方法 //实现接口(继承):implements //public cla

qq_39350172的博客 1万+

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

为什么类之间只能单继承不能多继承,接口之间可以多继承,类与接口之间可以多实现

类与类的关系 继承关系,只能单继承,但是可以多层继承 原因:子类如果能继承多个父类,如果多个父类中存在同名属性或者方法,子类继承时将不能判断继承自哪个父类的属性和方法,所以类之间不能多继承。 类与接口的关系 实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口。 原因 :接口的抽象方法没有具体的方法体,多接口即使拥有同名的抽象方法,类在实现时只需重写一个方法即可。 接口与接口的关系 继承关系,可以单继承,也可以多继承 原因:口中的方法均为抽象方法,没有具体实现的方法体,所以在多继承的情况

无 2862

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

继承接口与实现接口的理解

在我学习的过程中发现对两个相似的概念很难理解,就是实现接口和继承接口,我在网上也查了查答案,发现不是我想要的回答。我就是想弄清楚一个类实现一个接口和继承一个接口有什么区别,因为我发现就没有区别,继承和实现了之后都得重写所有的抽象方法。         现在,我终于发现我的问题所在了,我提的问题本身就有问题,就是一个可以实例化对象的类是不会去继承接口的,举例说明,Dog类可以继承Animal,它不

cba142536的博客 2787

C++接口继承与实现继承的区别

转载:https://blog.youkuaiyun.com/ljinddlj/article/details/1922189 接口继承与实现继承的区别 所谓接口继承,就是派生类只继承函数的接口,也就是声明;而实现继承,就是派生类同时继承函数的接口和实现。 我们都很清楚C++中有几个基本的概念,虚函数、纯虚函数、非虚函数。 虚函数...

Soar_dream的博客 812

Java细节01——类与接口,继承与实现

Java细节01——类与接口,继承与实现 就我们通常所知的—— 类可以继承类,类可以实现接口,接口可以继承接口。 这些知识,没有任何特别,如下所示: interface AA{ //一个接口 } class B extends A{ //一个类【继承】另一个类 } class C implements AA{ //一个类【实现】一个接口 }

computer165的专栏 1372
上一篇: 4乘4按键
下一篇: 摄像头(WebCam)在Linux操作系统中的驱动方法 (v0.1b)
KerNEL.AC.CN
博客等级 码龄15年 100粉丝 8原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值