封装、继承、多态 详解

article/2025/9/18 13:56:48

面向对象的三个基本特征:封装、继承、多态

1.封装

(1)封装是实现面向对象的第一步,封装就是将数据或函数等集合在一个单元中(类)。被封装的对象通常被称为抽象数据类型。

(2)类具有封装性,类能够把数据和算法(操作数据的函数)组合在一起,构成一个不可分割的整体;

(3)类具有信息隐藏的能力,它能够有效地把类的内部数据(即私有和受保护成员)隐藏起来,使外部函数只能通过类的公有成员才能访问类的内部数据,并且控制访问级别。

封装使类成为一个具有内部数据的自我隐藏能力、功能独立的软件模块

1)封装的意义

a)保护或防止代码(数据)在无意中被破坏。保护类中的成员,不让类以外的程序直接访问或修改,只能通过提供的公共接口访问(数据封装)

b)隐藏方法(实现)细节,只要接口不变,内容的修改不会影响到外部的调用者(方法封装)

c)封装可以使对象拥有完整的属性和方法(类中的函数)

d)外部不能直接访问对象的属性,只能通过该属性对应的公有方法访问

2)对象封装原则

a)内聚:指一个模块(类)内部各个部分之间的关联程度

b) 耦合:指各个模块(类)之间的关联程度

总结:用类实现封装,用封装来实现高内聚,低耦合

访问级别public,private,protected

public:

通常使用public设置公有成员,让本类之外的其他函数能够通过公有成员,按照类允许的方法访问类的私有数据,就能起到数据保护的目的。

private:

通常使用private把不想让其他程序访问的数据或者函数设置成私有成员,可禁止其他程序对这些数据随意修改。

protected:

通过protected设置保护成员,在封装中没什么用,通常在继承中使用。

2.继承

继承主要实现重用代码,节省开发时间

举例:当封装两个类后,第一个类中有一个非常复杂的成员函数,第二个类也需要同样的一个成员函数。如果第二个类重新编写成员函数,会增加开发时间,并且可能会因为一些疏忽,造成BUG,因此出现了继承这种方式,第二个类继承第一个类,那么,第二个类就可直接复用第一个类中的所有成员。(私有成员,可继承,不可访问)

1)继承是在已有类的基础上创建新类的过程,已有类称为基类(父类),新类称为派生类(子类)

2)派生类继承基类功能,且能够对基类的功能进行扩充、修改或重定义。

3)派生类复用了基类的全体数据成员函数,具有从基类复制而来的数据成员成员函数(基类私有成员可被继承,但是无法被访问)

4)派生类可以从一个或多个基类派生;通过一个基类派生的继承称为单继承,多个基类派生的继承为多重继承

5)一个类可以作为多个类的基类,一个派生类也可以作为另一个类的基类。

6)继承可传递 如果C从B中派生,B又从A中派生,那么C不仅继承了B中声明的成员,同样也继承了A中的成员。Object类作为所有类的基类。

7)基类中的构造函数、析构函数、友元函数、静态数据成员、静态成员函数都不能被继承。基类中成员的访问方式只能决定派生类能否访问它们。

8)基类的程序代码可以被派生类服用,提高了软件复用的效率,缩短了软件开发的周期

9)派生类如果定义了与继承而来的成员同名的新成员,就可以覆盖已继承的成员。但这并不因为这派生类删除了这些成员,只是不能再访问这些成员。

继承方式:

语法:

class 派生类名:[继承方式]  基类名{
        派生类成员声明与定义
};

公有继承(public):基类成员的访问权限在派生类中保持不变

私有继承(private):基类的private成员在派生类仍是private成员,但是基类的public和protected成员在派生类中会变成private成员。

保护继承(protected)

a)具有protected权限的数据,在该类没有被继承的情况下,protected访问属性与private完全相同。

b)在继承结构中,基类的protected成员不能被派生类的外部函数访问,但是可被派生类直接访问

多态

多态:  指不同对象接收到同一消息时会产生不同的行为(一个接口,多种方法)

简单来说,就是在同一个类或继承体系结构的基类与派生类中,用同名函数来实现各种不同的功能

多态的三个条件:

a) 继承的存在(继承是多态的基础,没有继承就没有多态).
b) 子类重写父类的方法(多态下调用子类重写的方法).
c) 父类引用变量指向子类对象(子类到父类的类型转换).

多态性主要体现在:向不同的对象发送同一个消息,不同对象接收到消息时产生不同的行为,即每个对象以自己的方式响应同样的消息。

多态可以按照实现的时机分为编译时多态,运行时多态

编译时多态:(静态联编) 指程序在编译时就可确定的多态性,通过重载机制实现

运行时多态:(动态联编) 指必须在运行中才可确定的多态性,通过继承虚函数

实现多态方式:

a)接口多态性

b)继承多态性

c)通过抽象类实现的多态性

多态的好处:

a)可替换性:多态对已存在的代码具有可替换性

b)可扩充性:多态对代码具有可扩充性。新增子类不会影响已存在类的各种性质。

c)灵活性:多态在程序中体现了灵活多样的操作,提高了使用效率(重载函数,重写函数)

d)简化性:多态简化对应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要


http://chatgpt.dhexx.cn/article/U15YsbJo.shtml

相关文章

面向对象编程三大特性------封装、继承、多态

一、封装 封装从字面上来理解就是包装的意思,专业点就是信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节&am…

人脸识别API接口 活体检测 人证比对 人身核验

技术原理 l通过自拍获得自拍照,或者通过活体SDK获得活体照片; l通过姓名、身份证号获得公安带网纹照片,通过去网纹技术得到清晰照片; l自拍照或者活体照片与公安照片进行比对; l确认用户与比对证件为同一人。 适用…

浅谈私有云端的人脸识别与人证比对

人脸识别,是基于人的脸部特征信息进行身份识别的一种生物识别技术。用摄像机或摄像头采集含有人脸的图像或视频流,并自动在图像中检测和跟踪人脸,进而对检测到的人脸进行脸部识别的一系列相关技术,通常也叫做人像识别、面部识别。 而私有云人脸识别人证对比系统是一款基于…

论文精读|大规模双样学习用于人证比对

点击上方“AI公园”,关注公众号 之前分享过Docface,Docface,这篇是在Docface之前的一篇文章,也是专门处理人证比对问题,也是用到了imprint的技术,Docface就是参考了这篇文章中的imprint。 Large-scale Bisample Learni…

基于人脸识别开发人证比对访客系统

2019独角兽企业重金招聘Python工程师标准>>> 原作者 panmingzhi 最近有个小区用到了虹软的人脸识别,效果还不错。又有一个项目要用人证访客对比,分享一下项目,希望可以帮到有需要的。 码字前先上项目地址:https://gite…

人脸识别技术开发人证比对访客系统

原作者 panmingzhi 最近有个小区用到了虹软的人脸识别,效果还不错。又有一个项目要用人证访客对比,分享一下项目,希望可以帮到有需要的。 码字前先上项目地址:https://gitee.com/panmingzhi/IdCardFaceIdentifier 首先是读证的问题…

人脸识别、人证比对核验数据特点

一、人证合一验证系统产品简介: 人证合一验证系统是一套利用专业证件扫描设备和身份证阅读机具,实现采集持证人相片与所持证件人相关信息发送至公安部身份证副本库进行生物特征比对,验证人与证是否一致的软硬件结合系统。 从技术上基本解决了这两个主要问题:利用经公安部…

双目活体检测摄像头|离线式人证比对|人脸识别SDK

产品概述 中安未来双目防伪人证核验设备(TH-DE300)是一款基于中安未来自主独立研 发的双目多光谱生物识别技术,打造的一体化终端产品,主要适用于需要进行人证合一验证 的业务场景,对被验证人员身份进行验证。如防止冒用他人办理业务、刷脸控制…

人脸识别人证比对技术SDK

人脸识别人证比对技术SDK 人脸识别人证比对技术SDK 一、人脸识别人证比对技术1:1及1:N概念 人脸识别人证比对技术1:1如我们现在在宾馆、网吧、机场安检等的人与身份证上的照片进行比对的应用,用来证明自己是自己。想想,目前我们在…

人证比对的解决方案

人证比对的解决方案 目前,人证比对应用的场景很多:机场、高铁站过安检;P2P的软件注册;酒店、网吧、手机营业厅、银行开户;以及政府单位的一些柜台。1:1人脸比对有着用户量大、行业广、比对速度快、精准、使用方便、成本…

PockerFace 离线版人证比对 SDK 编程指南

深圳市喜汇信息科技有限公司(PockerFace)是一家通过深度学习框架打造新一代人脸识别技术的科技创新公司,具有完全自主知识产权的核心技术,在人脸检测、人脸识别、人脸属性检测、活体检测、人脸搜索等多个领域均有原创性创新。检出率、错检率、误检率、检…

人脸识别算法源码SDK开发包人证比对二次开发检测核验开发包

人脸识别算法源码SDK开发包人证比对二次开发检测核验开发包 ID:89120059902830359120170116926

人脸识别|人证比对《DocFace+: ID Document to Selfie Matching》论文解读

请点击上方“AI公园”,关注公众号 【导读】这是之前那篇DocFace的后续,作者在原来的基础上进行了升级,效果更佳,而且开源了代码。 代码:https://github.com/seasonSH/DocFace 摘要:日常生活中需要大量的出示…

利用人脸识别SDK实现人证比对全过程

人证比对在如今的社会中随处可见,如高铁、飞机、酒店入住、甚至景区入口都可以看到各种各样的人证应用,人脸识别SDK的也如雨后春笋一般层出不穷,如百度、商汤、Face++、虹软等。在尝试使用各家的SDK之后,最让我青睐的要数虹软科技的SDK了,最直接的一个原因就是虹软承诺永久…

人证核验、人证比对系统应用行业如何判别

一、人证合一验证系统产品简介: 人证合一验证系统是一套利用专业证件扫描设备和身份证阅读机具,实现采集持证人相片与所持证件人相关信息发送至公安部身份证副本库进行生物特征比对,验证人与证是否一致的软硬件结合系统。 从技术上基本解决…

1.Oracle 安装教程及使用

1.win10 安装Oracle19c 详细步骤 链接资源: https://blog.csdn.net/qq_39915083/article/details/107055864? 2.wind10 安装oracle 11g教程完整版 链接资源: https://blog.csdn.net/qq_36205206/article/details/117170099? 备注:以上安…

oracle的安装教程

这里介绍oracle在64位操作系统上的的安装教程: 1、首先到官网https://www.oracle.com/index.html上去下载oracle64位的安装程序,将两个程序解压到同一目录中。如下图所示: 2、下载完成后,将2个压缩文件一起选中,鼠…

如何安装Oracle--新手安装Oracle教程

首先我们来了解一下Oracle: Oracle是一个数据库管理系统,类似于MySql和Sql Server,它是Oracle公司的核心产品。因为该公司在信息管理系统、企业数据处理、Internet及电子商务等领域使用非常广泛,其在数据安全性与完整性控制方面的优越性能比较…

非常好的Oracle基础教程

http://www.blogjava.ne 字符串函数 LENGTH() 字符长度 LENTTHB() 字节长度;一个汉字内存中占用 2字节 LTRIM、RTRIM、TRIM 截串 SUBSTR(表达式,位置,长度) Oracle 无左右取串函数,但可以使用变通方式完成。 左取串&#…

Oracle使用

前言 Oracle需要先创建用户,用户才可以创表 MySQL为先创建数据库,数据库创表 一、基础搭建 在Oracle中,表空间分为(永久表空间和临时表空间 表空间:最终持久化保存的物理位置 临时表空间:当我们对数据库进行各种操…