为什么没有抽象,就没有封装继承多态?

为什么没有抽象,就没有封装继承多态?,第1张

为什么没有抽象,就没有封装继承多态?

前言:为什么没有抽象,就没有封装继承多态?

        我们都知道理解面向对象编程及面向对象编程语言的关键就是理解其四大特性:封装、抽象、继承、多态。每个特性都有其存在的意义和目的,现在我们针对下每种特性说下为什么没有抽象,就没有封装继承多态?

        在面向对象的概念中,我们知道所有的对象都是通过类来描述的,但是并不是所有的类都是用来描述对象的,如果一个类中没有包含足够的信息来描述一个具体的对象,这样的类就是抽象类。抽象类往往用来表征我们在对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象,我们不能把它们实例化(拿不出一个具体的东西来描述)所以称为抽象。比如我们需要描述“车”,它就是一个抽象,它有体积、品牌、形状、质量等一些共性,但是又缺乏特性(自行车、轿车、卡车、火车都是车,他们都有自己的特性),由于这些“车”的特性不同我们拿不出唯一一种能代表“车”的东西(因为自行车、轿车、卡车、火车都不能代表“车”),我们可以用抽象类来描述它,所以抽象类是不能够实例化的。当我们用某个类来具体描述“轿车”时,这个类就可以继承描述“车”的抽象类,我们都知道“轿车”是 “车”的一种。抽象是隐藏了属性、方法的具体实现方式,让调用者只需要关心方法提供了哪些功能。抽象类是一个有共性的基类,这个基类集成了这一系列中需要的基本的 *** 作方法,这些 *** 作方法都是和业务分开的,不同的子类继承这个抽象类后,在需要实现各自不同业务的时候都需要通过抽象方法来定义,接着后面进行各自的实现。

        而对象的封装则是将通过抽象所得到的数据信息和 *** 作进行结合,使其形成一个有机的整体。对内执行 *** 作,对外则隐藏细节和数据信息。抽象和封装的区别在于抽象是一种思维方式,而封装则是一种基于抽象性的 *** 作方法。我们通过抽象所得到的数据信息及其功能,使用封装的技术将其重新聚合,形成一个新的聚合体,也就是类。可以说两者是相辅相成的关系,没有抽象,封装就无从谈起,没有封装,抽象也就没有意义。

        继承一般是晚辈从父辈那里继承财产,也可以说是子女拥有父母所给予他们的东西。在面向对象设计中,继承的含义与此类似,所不同的是,这里继承的实体是类。也就是说继承是子类拥有父类的成员。就拿“车”的例子来说,车子有车窗、轮胎这些特性(把车窗定义一个抽象类),而车窗又是多种多样,当我们用某个类来具体描述“车窗”时,这个类就可以继承“车窗”的抽象类,无论是有什么形状、功能、开启方式的车窗都是“车窗”的一种。

        多态简单点来说就是“一个接口,多种实现”,同一种事物表现出多种形态。多态是抽象化的一种体现,把一系列具体事物的共同点抽象出来, 再通过这个抽象的事物, 与不同的具体事物进行对话。就拿“车窗”来说,车窗的打开方式有多种,你可以看到用手左右推动的车窗,也可以看到上下拉动车窗,还可以看到往里或者往外开的车窗。这样就体现出同样是一个打开“车窗”的方法,可是却产生了不同的形态。

        以上便是我对为什么没有抽象,就没有封装继承多态的理解。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5697326.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存