封装,继承,多态

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

面向对象的三个基本特征

面向对象的三个基本特征是:封装、继承、多态。其中,封装 可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。而多态则是为了实现另一个目的——接口重用!

对象:万物皆对象
:类就是具有相同的属性和功能的对象的抽象的集合
实例:对象就是类的实例

这里写图片描述

封装

什么是封装?

封装可以隐藏实现细节,使得代码模块化;在面向对象编程上可理解为:把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。

封装的意义?

封装的意义在于保护或者防止代码(数据)被我们无意中破坏。在面向对象程序设计中数据被看作是一个中心的元素并且和使用它的函数结合的很密切,从而保护它不被其它的函数意外的修改。

  1. 保护数据成员,不让类以外的程序直接访问或修改,只能通过提供的公共的接口访问==>数据封装

  2. 方法的细节对用户是隐藏的,只要接口不变,内容的修改不会影响到外部的调用者==> 方法封装

  3. 当对象含有完整的属性和与之对应的方法时称为封装。

  4. 从对象外面不能直接访问对象的属性,只能通过和该属性对应的方法访问。

  5. 对象的方法可以接收对象外面的消息。

封装时的权限控制符区别如下:
这里写图片描述

继承

什么是继承?

继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。其继承的过程,就是从一般到特殊的过程。

通过继承创建的新类称为“子类”或“派生类”。被继承的类称为“基类”、“父类”或“超类”。要实现继承,可以通过“继承”(Inheritance)和“组合”(Composition)来实现。在某些 OOP 语言中,一个子类可以继承多个基类。但是一般情况下,一个子类只能有一个基类,要实现多重继承,可以通过多级继承来实现。

继承的实现方式?

继承概念的实现方式有三类:实现继承、接口继承和可视继承。

  1. 实现继承是指使用基类的属性和方法而无需额外编码的能力;

  2. 接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力;

  3. 可视继承是指子窗体(类)使用基窗体(类)的外观和实现代码的能力。

多态

什么是多态?

“一个接口,多种方法”,同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。

多态的三个条件?

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

重载(overload)和重写(override)是实现多态的两种主要方式

实现多态?

接口多态性
继承多态性
通过抽象类实现的多态性


实际应用

动物运动会:叫声比赛

        private void button1_Click(object sender, EventArgs e){Cat cat = new Cat("咪咪");//声明一个Cat的对象,对象名为cat,并将此cat对象实例化cat.ShoutNum = 5;MessageBox.Show(cat.Shout());//调用猫叫的方法}private void button2_Click(object sender, EventArgs e){Cat dog = new Cat("大黑");dog.ShoutNum = 5;MessageBox.Show(dog.Shout());}#region Cat类class Cat:Animal//猫类{public Cat():base(){ }public Cat(string name):base(name){ }//增加了override 表示方法重写public override string Shout()//猫叫的方法{string result = "";for (int i = 0; i < shoutNum; i++){result += "喵 ";}return "我的名字叫" + name + "" + result;}}#endregion#region Dog类class Dog : Animal//类{public Dog() : base(){ }public Dog(string name) : base(name){ }public override string  Shout()//狗叫的方法{string result = "";for (int i = 0; i < shoutNum; i++){result += "汪 ";}return "我的名字叫" + name + "" + result;}}#endregion#region Animal类class Animal{protected string name = "";//声明Animal类的受保护的字符串变量namepublic Animal(string name){this.name = name;//定义Animal的构造方法,参数是输入一个字符串}public Animal(){this.name = "无名";//将构造方法重载}//默认叫的次数是3//ShoutNum属性,注意是public,当中有两个方法get表示外界调用时可以得到shoutNum的值//set表示外接调用时恶意给内部的shoutNum赋值protected int shoutNum = 3;public int ShoutNum{get{return shoutNum;}set{shoutNum = value;                        }}//修饰符中增加了一个virtual,它表示此方法是虚方法,可以被子类重写public virtual string Shout(){return "";}}#endregion//“动物报名”的按钮事件//声明一个动物数组private Animal[] arrayAnimal;private void button3_Click(object sender, EventArgs e){//实例化最多可报名5个的动物数组对象arrayAnimal = new Animal[5];//报名的分别是猫,狗,狗,猫,猫arrayAnimal[0] = new Cat("小花");arrayAnimal[1] = new Dog("阿毛");arrayAnimal[2] = new Dog("小黑");arrayAnimal[3] = new Cat("大胖");arrayAnimal[4] = new Cat("咪咪");}//叫声比赛的按钮事件private void button4_Click(object sender, EventArgs e){//遍历这个数组,让它们都Shout()foreach(Animal item in arrayAnimal){//由于有了多态性,所以叫的时候,程序会自动去找item是什么对象,然后用哪个重写方法MessageBox.Show(item.Shout());}}

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

相关文章

java之封装,继承,多态

一&#xff0c;前言 ​ 今天总结一下关于Java的三大特性&#xff0c;封装&#xff0c;继承&#xff0c;多态。其实关于三大特性对于从事编程人员来说都是基本的了&#xff0c;毕竟只要接触Java这些都是先要认识的&#xff0c;接下来就系统总结一下。 二&#xff0c;封装 ​ …

封装 继承和多态

封装继承和多态 封装 我们在设计程序时&#xff0c;讲究六个字&#xff0c;高内聚&#xff0c;低耦合 封装就是我们对数据进行隐藏&#xff0c;多用于来封装属性&#xff0c;封装方法较少。 记住封装的核心&#xff0c;就是私有&#xff08;private&#xff09; 令属性为私…

js面向对象之封装,继承,多态,类的详解

封装 在面向对象的操作中&#xff0c;我们有完全不同的一些写法。 想要封装我们的对象&#xff0c;就要用到构造函数。我们需要创建构造函数&#xff0c;构造函数和函数一致&#xff0c;都是通过function创建的 首字母大写&#xff08;规范&#xff0c;为了和普通函数进行区…

【c++ 封装、继承、多态】

文章目录 面向对象的三个基本特征1. 封装2. 继承2.1 继承的三种实现方式 3. 多态3.1 多态的俩种实现方式分析3.2 多态存在的三个必要条件3.3 C多态机制的实现&#xff1a; 4. 动态绑定与多态4.1 什么是动态绑定4.2 动态绑定发生的条件&#xff1f;4.3 动态绑定的实际意义4.4 程…

Java基础—封装继承多态(详细)

文章目录 面向对象三大特征 封装 继承 多态1.封装2.继承2.1注意事项参考文档2.2 this和super关键字2.3 重载和重写 3.多态3.1方法的多态3.2对象的多态3.3多态转型3.3.1向上转型3.3.2向下转型3.3.3 instanceof 关键字 面向对象三大特征 封装 继承 多态 1.封装 定义:就是把事物…

Java中的封装,继承和多态(详解)

目录 封装继承多态接口 一些建议和小结写在最后的话 封装 所谓的封装就是把类的属性和方法使用private修饰&#xff0c;不允许类的调用者直接访问&#xff0c;我们定义如下一个类&#xff0c;可以看到所有的成员变量和成员方法都使用private修饰了&#xff0c;我们现在来使用一…

封装、继承、多态

目录 访问限定符 封装 继承 super关键字 super和this的比较 继承在内存中的情况 重写override 重写和重载的比较 多态 JAVA中的动态绑定机制 JAVA面向对象程序三大特性&#xff1a;封装、继承、多态。在类和对象阶段&#xff0c;主要研究的就是封装特性。 在了…

【Java基础】 ⾯向对象编程三⼤特性 --封装、继承、多态

文章目录 封装继承多态 封装 把客观事物封装成抽象的类&#xff0c;并且类可以把自己的数据和方法只让可信的类或者对象操作&#xff0c;对不可信的进行信息隐藏。封装是面向对象的特征之一&#xff0c;是对象和类概念的主要特性。 通俗的说&#xff0c;一个类就是一个封装了数…

Java基础知识之封装+继承+多态详解

前言 这篇博客是基于Java类和对象的基础之上的相关知识点。因为特别重要且语法规则较多&#xff0c;所以想单独总结方便之后复习。 本篇博客涉及知识点思维导图&#xff1a; 目录 1.封装 2.继承 3.多态 1.封装 生活中有很多东西我们并不想让其它人知道&#xff0c;比如我的身…

封装、继承和多态

目录 前言一、什么是封装&#xff1f;二、什么是继承&#xff1f;三、什么是多态&#xff1f; 前言 其实封装、继承和多态不仅仅是java的特性&#xff0c;而是所有面向对象程序的三大特性。 一、什么是封装&#xff1f; 封装就是对类内部的实现细节进行隐藏&#xff0c;然后…

封装、继承、多态 详解

面向对象的三个基本特征&#xff1a;封装、继承、多态 1.封装 &#xff08;1&#xff09;封装是实现面向对象的第一步&#xff0c;封装就是将数据或函数等集合在一个单元中&#xff08;类&#xff09;。被封装的对象通常被称为抽象数据类型。 &#xff08;2&#xff09;类具…

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

人脸识别人证比对技术SDK

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