OOP Class具体解释
对象[编辑]
对象(Object)是类的实例。比如。“狗”这个类列举狗的特点,从而使这个类定义了世界上全部的狗。
而莱丝这个对象则是一条详细的狗,它的属性也是详细的。狗有皮毛颜色。而莱丝的皮毛颜色是棕白色的。因此,莱丝就是狗这个类的一个实例。
一个详细对象属性的值被称作它的“状态”。(系统给对象分配内存空间。而不会给类分配内存空间。
这非常好理解。类是抽象的系统不可能给抽象的东西分配空间,而对象则是详细的。)
如果我们已经在上面定义了狗这个类,我们就能够用这个类来定义对象:
定义莱丝是狗 莱丝.毛皮颜色:棕白色 莱丝.吠叫()
我们无法让狗这个类去吠叫,可是我们能够让对象“莱丝”去吠叫,正如狗能够吠叫,但没有详细的狗就无法吠叫。
类和对象就好比是“实型”和“1.23”,“实型”是一种数据的类型,而“1.23”是一个真正的“实数”(即对象)。全部的“实数”都具有“实型”所描诉的特征,如“实数的大小”,系统则分配内存给“实数”存储详细的数值。
§消息传递[编辑]
一个对象通过接受消息、处理消息、传出消息或使用其它类的方法来实现一定功能,这叫做消息传递机制(Message Passing)。
如:莱丝能够通过吠叫引起人的注意。从而导致一系列的事发生。
§继承[编辑]
继承性(Inheritance)是指,在某种情况下,一个类会有“子类”。
子类比原本的类(称为父类)要更加详细化。比如,“狗”这个类可能会有它的子类“牧羊犬”和“吉娃娃犬”。
在这样的情况下,“莱丝”可能就是牧羊犬的一个实例。子类会继承父类的属性和行为。而且也可包括它们自己的。
我们如果“狗”这个类有一个方法(行为)叫做“吠叫()”和一个属性叫做“毛皮颜色”。
它的子类(前例中的牧羊犬和吉娃娃犬)会继承这些成员。这意味着程序猿仅仅须要将同样的代码写一次。
在伪代码中我们能够这样写:
类牧羊犬:继承狗定义莱丝是牧羊犬 莱丝.吠叫() /* 注意这里调用的是狗这个类的吠叫方法。*/
回到前面的样例,“牧羊犬”这个类能够继承“毛皮颜色”这个属性,并指定其为棕白色。
而“吉娃娃犬”则能够继承“吠叫()”这种方法,并指定它的音调高于寻常。
子类也能够增加新的成员,比如。“吉娃娃犬”这个类能够增加一个方法叫做“颤抖()”。设若用“牧羊犬”这个类定义了一个实例“莱丝”。那么莱丝就不会颤抖,由于这种方法是属于吉娃娃犬的,而非牧羊犬。其实,我们能够把继承理解为“是”或“属于”。莱丝“是”牧羊犬,牧羊犬“属于”狗类。因此,莱丝既得到了牧羊犬的属性。又继承了狗的属性。 我们来看伪代码:
类吉娃娃犬:继承狗 開始公有成员:颤抖() 结束 类牧羊犬:继承狗定义莱丝是牧羊犬 莱丝.颤抖() /* 错误:颤抖是吉娃娃犬的成员方法。 */
当一个类从多个父类继承时,我们称之为“多重继承”。如一仅仅狗既是吉娃娃犬又是牧羊犬(尽管其实并不合逻辑)。
多重继承并不总是被支持的,由于它非常难理解,又非常难被好好使用。
§封装性[编辑]
具备封装性(Encapsulation)的面向对象程序设计隐藏了某一方法的详细运行步骤,取而代之的是通过消息传递机制传送消息给它。因此,举例来说。“狗”这个类有“吠叫()”的方法,这一方法定义了狗详细该通过什么方法吠叫。
可是。莱丝的朋友并不知道它究竟是怎样吠叫的。
从实例来看:
/* 一个面向过程的程序会这样写: */ 定义莱丝 莱丝.设置音调(5) 莱丝.吸气() 莱丝.吐气()/* 而当狗的吠叫被封装到类中,不论什么人都能够简单地使用: */ 定义莱丝是狗 莱丝.吠叫()
封装是通过限制仅仅有特定类的对象能够訪问这一特定类的成员,而它们通常利用接口实现消息的传入传出。
举个样例,接口能确保幼犬这一特征仅仅能被赋予狗这一类。
通常来说,成员会依它们的訪问权限被分为3种:公有成员、私有成员以及保护成员。
有些语言更进一步:Java能够限制同一包内不同类的訪问;C#和VB.NET保留了为类的成员聚集准备的keyword:internal(C#)和Friend(VB.NET);Eiffel语言则能够让用户指定哪个类能够訪问全部成员。
§多态[编辑]
多态(Polymorphism)是指由继承而产生的相关的不同的类。其对象对同一消息会做出不同的响应[2]。比如,狗和鸡都有“叫()”这一方法,可是调用狗的“叫()”,狗会吠叫。调用鸡的“叫()”,鸡则会啼叫。 我们将它体如今伪代码上:
类狗 開始公有成员:叫()開始吠叫()结束 结束类鸡 開始公有成员:叫()開始啼叫()结束 结束定义莱丝是狗 定义鲁斯特是鸡 莱丝.叫() 鲁斯特.叫()
转载于:https://www.cnblogs.com/brucemengbm/p/6742615.html
OOP Class具体解释相关推荐
- Python Day26:多态、封装、内置函数:__str__、__del__、反射(反省)、动态导入模块...
## 多态 ```python OOP中标准解释:多个不同类型对象,可以响应同一个方法,并产生不同结果,即为多态 多态好处:只要知道基类使用方法即可,不需要关心具体哪一个类的对象实现的,以不变应万变, ...
- delstr函数python_Python Day26:多态、封装、内置函数:__str__、__del__、反射(反省)、动态导入模块...
## 多态 ```python OOP中标准解释:多个不同类型对象,可以响应同一个方法,并产生不同结果,即为多态 多态好处:只要知道基类使用方法即可,不需要关心具体哪一个类的对象实现的, 以不变应万变 ...
- 计算机术语多态意思,C ++中的多态性
据我所知: C ++提供了三种不同类型的多态性. 虚拟功能 函数名称重载 运算符重载 除了上述三种类型的多态性外,还存在其他种类的多态性: 运行 编译时间 ad-hoc多态性 参数多态性 我知道运行时 ...
- ansys 内聚力_纯功能:高内聚力,低耦合
ansys 内聚力 TL;DR Why would you bother to write pure functions? Do you really need to establish high c ...
- php opp 面向对象,解释 OOP 与 OPP 的关系
可能大多数人学习PHP的时候,是冲着他的简单易开发来的,所以很多初学者,不是很能理解OOP和OPP的概念,今天我就依照我的观点详细解说下. 首先我先谈谈OOP,OOP即是面对对象编程,Object O ...
- 乔布斯是如何形象解释 OOP 的
原文地址: http://blog.jobbole.com/93941/ 有童鞋在 Quora 上问「什么是面向对象编程 OOP?」下面是 Amogh Talpallikar 的回答. 对于面向对象编 ...
- Java中OOA、OOD、OOP、OOT、OOSM、OOM的具体含义解释
OOA: Object-Oriented Analysis(面向对象分析) 是指确定需求或者业务的角度,按照面向对象的思想来分析业务. OOD: Object-Oriented Design(面向对 ...
- OOP 面向对象 七大原则 (一)
OOP 面向对象 七大原则 (一) 大家众所周知,面向对象有三大特征继承封装多态的同时,还具有这七大原则,三大特征上一篇已经详细说明,这一篇就为大家详解一下七大原则: 单一职责原则,开闭原则,里氏 ...
- 面向对象编程概念_如何向6岁的孩子解释面向对象的编程概念
面向对象编程概念 by Alexander Petkov 通过亚历山大·佩特科夫(Alexander Petkov) Have you noticed how the same cliche ques ...
最新文章
- OpenCV 笔记(04)— OpenCV2 升级到 OpenCV3/CV4 的改动(去掉 CV_前缀、使用新的前缀替换、使用新的命名空间宏)
- VMware vSphere开发(1)安装配置VMware vSphere Web Services SDK的运行环境
- Win10:tensorflow-gpu安装总结
- android纹理缓存,Android OpenGLES(七) 理解纹理与纹理过滤
- TID大会学习心得之敏捷软件架构-微服务
- server2008R2平台部署exchange2010
- Windows 8.1下安装Mac OS X 10.8虚拟机
- unity 烘焙参数 设置_Unity通用渲染管线(URP)系列(九)——点光源和聚光灯
- laravel数据迁移问题
- word怎么调列宽_怎么给文件加密???
- 审车按月还是日期_@老司机,你该审车了,秒懂的审车攻略,快快揣口袋吧
- python编程入门指南-Python 入门指南
- 推荐算法之Thompson(汤普森)采样
- 20款免费项目管理系统推荐
- android ems具体意义?
- 完美解决Macbook安装win 10调节亮度的问题
- 九宫八阵图之虐翼阵——网闸
- 北大核心+CSCD期刊《电光与控制》投稿经验分享,2023年4月最新
- Android RSS订阅
- 让流媒体服务SRS支持P2P通信
热门文章
- C++多继承中的二义性问题
- Activiti7.0实战学习(九):查询历史表中的数据
- asp.net paypal信用卡支付功能
- Jquery——将页面定位到某个具体位置
- 专业办公套件WPS Office 2020 for Mac
- 香橙派Zero2电视盒子开发板连接HDMI如何修改分辨率
- 超人:钢铁之躯 Man of Steel (2013)
- java计算机毕业设计疫情期间高校师生外出请假管理系统录屏源代码+系统+数据库+lw文档
- 程序员的进化 - 在拉勾1024程序员节上的演讲
- 云计算实战应用案例精讲-【深度学习】多模态融合(论文篇三)