详细的解释下类的封装性,抽象性,继承性和多态性。

author author     2023-02-17     143

关键词:

3QQ

学妹!其实书上就有,百度也有C++特性:抽象和封装,继承和派生,多态性多态性: 一种事物,多种形态;一个接口,多个方法C+++中指由于继承产生的相关的不同的类,对同一消息作出不同的处理即通过虚函数实现静态多态性:函数重载,运算符重载动态多态性:虚函数,通过基类的指针或引用实现 虚析构函数 纯虚函数 虚函数抽象类:包含一个或多个纯虚函数的类,不可实例化虚基类:多重继承时使用虚拟继承以防止继承同一基类的多份数据1.抽象性   把众多的事物进行归纳、分类是人们在认识客观世界时经常采用的思维方法,“物以类聚,人以群分”就是分类的意思,分类所依据的原则是抽象。抽象(Abstract)就是忽略事物中与当前目标无关的非本质特征,更充分地注意与当前目标有关的本质特征。从而找出事物的共性,并把具有共性的事物划为一类,得到一个抽象的概念。例如,在设计一个学生成绩管理系统的过程中,考察学生张华这个对象时,就只关心他的班级、学号、成绩等,而忽略他的身高、体重等信息。因此,抽象性是对事物的抽象概括描述,实现了客观世界向计算机世界的转化。将客观事物抽象成对象及类是比较难的过程,也是面向对象方法的第一步。例如,将学生抽象成对象及类的过程如图1-1所示。2.封装性   封装(Encapsulation)就是把对象的属性和行为结合成一个独立的单位,并尽可能隐蔽对象的内部细节。图1-1中的学生类也反映了封装性。封装有两个含义:一是把对象的全部属性和行为结合在一起,形成一个不可分割的独立单位。对象的属性值(除了公有的属性值)只能由这个对象的行为来读取和修改;二是尽可能隐蔽对象的内部细节,对外形成一道屏障,与外部的联系只能通过外部接口实现。  封装的信息隐蔽作用反映了事物的相对独立性,可以只关心它对外所提供的接口,即能做什么,而不注意其内部细节,即怎么提供这些服务。例如,用陶瓷封装起来的一块集成电路芯片,其内部电路是不可见的,而且使用者也不关心它的内部结构,只关心芯片引脚的个数、引脚的电气参数及引脚提供的功能,利用这些引脚,使用者将各种不同的芯片连接起来,就能组装成具有一定功能的模块。  封装的结果使对象以外的部分不能随意存取对象的内部属性,从而有效地避免了外部错误对它的影响,大大减小了查错和排错的难度。另一方面,当对象内部进行修改时,由于它只通过少量的外部接口对外提供服务,因此同样减小了内部的修改对外部的影响。同时,如果一味地强调封装,则对象的任何属性都不允许外部直接存取,要增加许多没有其他意义,只负责读或写的行为。这为编程工作增加了负担,增加了运行开销,并且使得程序显得臃肿。为了避免这一点,在语言的具体实现过程中应使对象有不同程度的可见性,进而与客观世界的具体情况相符合。  封装机制将对象的使用者与设计者分开,使用者不必知道对象行为实现的细节,只需要用设计者提供的外部接口让对象去做。封装的结果实际上隐蔽了复杂性,并提供了代码重用性,从而降低了软件开发的难度。3. 继承性   客观事物既有共性,也有特性。如果只考虑事物的共性,而不考虑事物的特性,就不能反映出客观世界中事物之间的层次关系,不能完整地、正确地对客观世界进行抽象描述。运用抽象的原则就是舍弃对象的特性,提取其共性,从而得到适合一个对象集的类。如果在这个类的基础上,再考虑抽象过程中各对象被舍弃的那部分特性,则可形成一个新的类,这个类具有前一个类的全部特征,是前一个类的子集,形成一种层次结构,即继承结构。  继承(Inheritance)是一种联结类与类的层次模型。继承性是指特殊类的对象拥有其一般类的属性和行为。继承意味着“自动地拥有”,即特殊类中不必重新定义已在一般类中定义过的属性和行为,而它却自动地、隐含地拥有其一般类的属性与行为。继承允许和鼓励类的重用,提供了一种明确表述共性的方法。一个特殊类既有自己新定义的属性和行为,又有继承下来的属性和行为。尽管继承下来的属性和行为是隐式的,但无论在概念上还是在实际效果上,都是这个类的属性和行为。当这个特殊类又被它更下层的特殊类继承时,它继承来的和自己定义的属性和行为又被下一层的特殊类继承下去。因此,继承是传递的,体现了大自然中特殊与一般的关系。  在软件开发过程中,继承性实现了软件模块的可重用性、独立性,缩短了开发周期,提高了软件开发的效率,同时使软件易于维护和修改。这是因为要修改或增加某一属性或行为,只需在相应的类中进行改动,而它派生的所有类都自动地、隐含地作了相应的改动。  由此可见,继承是对客观世界的直接反映,通过类的继承,能够实现对问题的深入抽象描述,反映出人类认识问题的发展过程。4.多态性   面向对象设计借鉴了客观世界的多态性,体现在不同的对象收到相同的消息时产生多种不同的行为方式。例如,在一般类“几何图形”中定义了一个行为“绘图”,但并不确定执行时到底画一个什么图形。特殊类“椭圆”和“多边形”都继承了几何图形类的绘图行为,但其功能却不同,一个是要画出一个椭圆,另一个是要画出一个多边形。这样一个绘图的消息发出后,椭圆、多边形等类的对象接收到这个消息后各自执行不同的绘图函数。如图1-3所示,这就是多态性的表现。  具体来说,多态性(Polymorphism)是指类中同一函数名对应多个具有相似功能的不同函数,可以使用相同的调用方式来调用这些具有不同功能的同名函数。  继承性和多态性的结合,可以生成一系列虽类似但独一无二的对象。由于继承性,这些对象共享许多相似的特征;由于多态性,针对相同的消息,不同对象可以有独特的表现方式,实现特性化的设计。  面向对象技术使软件的开发超越了过程式编程,而进入了简化应用程序开发的可重用编程世界。不象旧的编程方式,当程序的体积增长时,程序维护和调试并不变得更复杂。对象技术在两个级别发挥作用:  在数据级别,对象技术可以集成一个机构中的许多不同类型的信息,过去的信息已经不再兼容了。  在程序开发级别,对象技术提供模块化程序构造,这时,程序员在现有对象的基础之上进行开发。对象可以被其他对象再使用,以利用它们的过程,从而消除了当再次需要它们的时候,必须每次都重写这些代码。  由于无需改变或分解整个系统,所以再设计或扩展系统是很容易的。实际上,是放弃或修改这些模块,并且增加新的模块以提供增强的功能。  一个对象是一个完整的数据分组,它包括对数据进行处理的功能。在一个面向对象的环境,对象的数目是数不清的。它们可能包括一个数据库的记录、一个文件、一个物理资源、甚至是一个用户(它是用户的登录帐户)。为了使开发人员使用面向对象编程语言工作,对象是一个自满足模块,它包含数据、以及数据的结构、和处理数据的功能。  对象可以是下面情况的任何之一:  在一个面向对象操作系统中实现一个进程的代码,例如验证安全权限。  程序员和开发人员用于汇编程序的预定义代码模块。  来自一个应用程序的数据块,如一个绘图程序、电子表格或多媒体工具。  在一个数据库中的对象,例如库存条目或顾客。  在一个面向对象的数据库中,对象可以代表跟踪的商务中的实际实体,例如生产的产品、库存、顾客和厂商。相应地,在面向对象的操作系统中,对象也是一些实体,如文件、设备和用户,或构成一个复合文档的实体数据块。在面向对象的环境,首先定义基本的对象,然后围绕这些对象建造系统。  有许多潜在对象,并且它们可以归化到定义不同类型对象的层次化类(hierarchical classes)。父类可以对子类传递特性。让我们来考虑一个类“people”,它拥有两个子类“male”和“female”。这些子类又可以拥有它们自己的子类,如图O-3所示。每个子类都有从它的父亲处继承来的综合特征,以及它们自己的专有特征。另外,一些继承来的特征由于它们对子类不合适,而会被阻挡。  这和计算机如何关联昵?记住,现在我们在讨论存储许多不同数据类型,和访问许多不同类型应用程序数据的途径。通过按这种方式对数据分类,我们可以在一个对象内,直接包括进行抽取、显示、合并和打印的过程数据。如果需要,对数据进行分类,可以简化构造过程和改造(revision)过程。例如,一个数据块对象可能包括一个对这些数据按特定的方式进行排序的过程,它可以被许多不同的使用这个数据的应用程序所激活。</SPAN></SPAN></p> 参考技术A   “类”的特性解释:
  1,封装性:把数据和行为结合起在一个包中,并对对象使用者隐藏数据的实现过程,一个对象中的数据叫他的实例字段(instance
field);
  2,抽象性:
  (1)往往用来表征对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象;
  (2)抽象类是不完整的,它只能用作基类,在面向对象方法中,抽象类主要用来进行类型隐藏和充当全局变量的角色。
  3,继承性:
  (1)继承可以使得子类具有父类的各种属性和方法,而不需要再次编写相同的代码;
  (2)在令子类继承父类的同时,可以重新定义某些属性,并重写某些方法,即覆盖父类的原有属性和方法,使其获得与父类不同的功能。
  3,多态性:是指以适当频率在一个群体的某个特定遗传位点(基因序列或非基因序列)发生两种或两种以上变异的现象。
参考技术B 我只知道抽象的含义,看看毕加索的油画你就知道什么是抽象了…何止是抽象,还抽筋嘞…哈哈…

php面向对象三大特点学习(充分理解抽象封装继承多态)

...、封装、继承、多态 面象对向的三大特点:封装性、继承性、多态性首先简单理解一下抽象:我们在前面定义一个类的时候,实际上就是把一类事物共有的属性和行为提取出来,形成一个物理模型(模版),这种研究问题的... 查看详情

二面向对象三大特性

...继承实现的原理  九、子类中调用父类的方法二多态与多态性  一、多态  二、多态性三封装  一、封装定义  二、特性(property)  三、封装与扩展性 一继承与派生一、继承定义什么是继承继承是一种创建新类... 查看详情

面向对象(封装继承多态抽象)

封装--封装主要是基于类的属性,本类中的属性私有化,即有private修饰词来加以修饰,生成GET,SET方法来给外界调用、继承--java继承是面向对象的最显著的一个特征。继承是从已有的来中派生出新的类,新的类能吸收已有类的数... 查看详情

php面向对象封装继承多态接口重载抽象类最终类总结(代码片段)

...载、抽象类、最终类面向对象封装继承多态 首先,在解释面向对象之前先解释下什么是面向对象?[面向对象]1、什么是类? 具有相同属性(特征)和方法(行为)的一系列个体的集合,类是一个抽象的概念2、什么是对象?从... 查看详情

面向对象,面向过程,类

...系。类的使用者不用了解类的构造即可使用。  2 继承性:子类继承一个或多个父类中的方法,并可以重写或添加新的属性或方法。简化了对象和类的创建,增加了代码的可重用性。  3 多态性:同一个类的不同对象... 查看详情

对象继承封装多态抽象类的组合应用

对象、继承、封装、多态、抽象类的组合应用编写工资系统,实现不同类型员工(多态)的按月发放工资。如果当月出现某个Employee对象的生日,则将该员工的工资增加100元。(1)定义一个Employee类,该类包含:  private成员变量n... 查看详情

类有哪三个基本特性?各特性的优点?

...个基本特性?各特性的优点? 解答:类具有封装性、继承性和多态性。 封装性:类的封装性为类的成员提供公有、缺省、保护和私有等多级访问权限,目的是隐藏类中的私有变量和类中方法的实现细节。 继承性:类... 查看详情

面向对象

...代码块内部类面向对象编程的特征:封装性继承性多态性抽象性其他关键字:thissuperpackageimportstaticfinalabstractinterface... return之后不能再有语句。可以在方法体内调用其他方法和属性,但是不能再定义新方法。被同一类创建的... 查看详情

c#中请说明类的三大特性,并举例说明类的继承和多态。

...方式的不同。答:JavaApplication是完整的程序,需要独立的解释器来解释运行;而JavaApplet则是嵌在HTML编写的Web页面中的非独立运行程序,由Web浏览器内部包含的Java解释器来解释运行。在源程序代码中两者的主要区别是:任何一个... 查看详情

oop思想

...的单元,组件在OOP计算机程序中是模块和结构化的基础。抽象性-程序有能力忽略正在处理中信息的某些方面,即对信息主要方面关注的能力。封装-也叫做信息封装:确保组件不会以不可预期的方式改变其它组件的内部状态;... 查看详情

abstract(抽象)

...态。封装:什么是封装,按到我的理解,封装就是把某些类的相关属性和方法封装,对内实现数据影城,对外提供稳定接口。继承:从字面上理解,就是声明一个父类,然后子类可以继承,并且子类拥有父类的一切属性和方法。... 查看详情

面向对象-封装继承多态

一、什么是封装?请详细解释。主要封装哪些内容?①每个对象都包含它能进行操作所需要的所有信息,这个特性称为封装,因此对象不必依赖其他对象来完成自己的操作。这样方法和属性包装在类中,通过... 查看详情

java面试题(代码片段)

...口的意义用三个词就可以概括:规范,扩展,回调。抽象类的意义抽象类的意义可以用三句话来概括:为其他子类提供一个公共的类型封装子类中重复定义的内容定义抽象方法,子类虽然有不同的实现,但是定义时一致的接口和... 查看详情

关于类的理解

1.什么是类  具有相同特征和和行为的对象集合,一种抽象的概念。类是构造对象的模板或蓝图。  类有三大特性:封装、继承、多态。  封装:     将数据和行为组合到类中的过程,就被成为封装,有时也称数据隐... 查看详情

构造重写重载接口抽象多态封装继承(代码片段)

构造解释:就是不加修饰,方法名与类名相同的一个方法。在使用该方法的时候,只需要实例化类就可以了。classczcz()System.out.println("不含参数的");publicvoid使用()newcz();//使用不含参数的构造方法  重写packageAA;publicclasscsczpub... 查看详情

java中面向对象的特征都有哪些?

...把现实生活中的对象抽象为类。继承:在定义和实现一个类的时候,可以在一个已经存在的类的基础上来进行,把这个已经存在的类所定义的内容作为自己的内容,并可以加入若干新的内容,或修改原来的方法使之更符合特殊的... 查看详情

28道java基础面试题-上

...隐藏一切可隐藏的东西,只向外界提供最简单的编程接口多态性:多态性是指允许不同子类型的对象对同一消息作出不同的响应。简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情。多态性分为编译时的多态性... 查看详情

android里的封装,继承,多态,都是表现在哪里,都是有啥方法,有啥

...户可以用一个实现接口的类来处理这个点击事件,这就是多态性,因为对于android来讲,它根本不知道用户会起个什么名实的类,它只要你实现它的接口即可。参考技术A  继承是一种联结类的层次模型,并且允许和鼓励类的重... 查看详情