《JavaScript面向对象编程指南》——1.5 面向对象的程序设计

  • 时间:
  • 浏览:2
  • 来源:uu快3app娱乐_uu快3辅助_官方网址

1.5.2 类

在现实生活中,例如的对象之间往往都会某些一块儿的组成形态。例如蜂鸟和老鹰都具有鸟类的形态,随后它们上还可以 被统称为鸟类。在OOP中,类实际上也不 对象的设计蓝图可能性制作配方。“对象”例如 词,大家有随后也叫做“实例”,也不大家上还可以 说老鹰是鸟类的另另几次多实例2。大家能基于相同的类创建出某些不同的对象。可能性类更多的是并不是模板,而对象也不 在什么模板的基础上被创建出来的。

大家还上还可以 找到某些例如情形,例如Book是由另另几次多或多个author对象、publisher对象、若干chapter对象以及一组table对象等合并(聚合)而成的对象。

此外,大家还有另另几次多口语方面的借喻1:

对象往往是用名词来表示的(如book、person)

措施一般都会些动词(如read、run)

属性值则往往是某些形容词

大家上还可以 来试一下。例如,在“The black cat sleeps on my head”例如 得话中,“the cat”(名词)也不 另另几次多对象,“black”(形容词)则是另另几次多颜色属性值,而“sleep”(动词)则代表另另几次多动作,也也不 OOP语义中的措施。甚至,为了进一步证明例如 借喻的合理性,大家还可以 还可以 将得话中的“on my head”看做动作“sleep”的另另几次多限定条件,随后,它还可以 还可以 被当做传递给sleep措施的另另几次多参数。

在传统的OOP环境中,继承通常指的是类与类之间的关系,但可能性JavaScript中不地处类,随后继承上还可以 了地处在对象之间。

1.5.6 多态

在随后的例子中,大家的Programmer对象继承了上一级对象Person的所有措施。这意味着着 例如 个多多对象都实现了“talk”等措施。现在,大家的代码中含另另几次多叫做Bob的变量,即便是在大家问你它是另另几次多Person对象还是另另几次多Programmer对象情形下,也依然上还可以 直接调用该对象的“talk”措施,而并非担心这会影响代码的正常工作。例如例如 不同对象通过相同的措施调用来实现各人所有行为的能力,大家就称之为多态。

相关的数据(用于存储属性)。

基于什么数据所能做的事(所能调用的措施)。

但除此之外,封装例如 术语中还中含了一层隐藏信息的概念,这完都会当事人面的问題。随后,大家在理解例如 概念时,还要要留意它在具体的OOP语境中的含义。

以另另几次多MP3播放器为例。可能性假设这是另另几次多对象,不能自己作为该对象的用户,大家无疑还要某些例如于像按钮、显示屏原本的工作接口。什么接口能帮助大家使用该对象(如播放歌曲例如)。至于它们内部人员是如可工作的,大家并非清楚,随后多数情形下也不 会在乎什么。换句话说,什么接口的实现对大家来说是不可见的。同样的,在OOP中也是不能自己。当大家在代码中调用另另几次多对象的措施时,无论该对象是来自大家当事人的实现还是某个第三方库,大家都会还要知道该措施是如可工作的。在编译型语言中,大家甚至都无法查看什么对象的工作代码。而可能性JavaScript是并不是解释型语言,源代码是上还可以 查看的。但共要在例如 概念上它们是一致的,即大家只还要知道所操作对象的接口,而并非去关心它的具体实现。

1.5.3 封装

封装则是原本OOP相关的概念,它主要用于阐述对象中含高高(或封装)的内容,它们通常由两每种组成:

当另另几次多对象继承自原本对象时,通常会往其中加入新的措施,以扩展被继承的老对象。大家通常将例如 过程称之为“B继承自A”可能性“B扩展自A”。另外对于新对象来说,它还可以 还可以 根据当事人的还要,从继承而来那组措施中挑选几次来重新定义。原本做并非会改变对象的接口,可能性措施的名字是相同的,只不过当大家调用新对象时,该措施的行为与随后不同了。大家将例如 重定义继承措施的过程叫做覆写。

随后大家要明白,JavaScript与C++或Java例如 传统的面向对象语言不同,它实际上压根儿不能自己类。该语言的一切都会基于对象的,其所依靠的是一套原型系统(这里的原型(prototype)实际上也是并不是对象,大家稍后再来删剪讨论例如 问題)。在传统的面向对象语言中,大家一般会原本描述当事人的做法:“我基于Person类创建了另另几次多叫做Bob的新对象。”,而在例如 基于原型的面向对象语言中,大家则会原本描述:“我将现有的Person对象扩展成了另另几次多叫做Bob的新对象。”

1.5.1 对象

既然例如 任务管理器运行设计风格叫做面向对象,不能自己它的重点就在于对象。而所谓的对象,实质上是指“事物”(包括人和物)在任务管理器运行设计语言中的表现形式。这里的“事物”上还可以 是任何东西(如某个客观地处的对象,可能性某些较为抽象的概念)。例如,对于猫例如 常见对象来说,大家上还可以 看了它们具有某些明确的形态(如颜色、名字、体型等),能执行某些动作(如喵喵叫、睡觉、躲起来、逃跑等)。在OOP语义中,什么对象形态就叫做属性,而什么动作就称之为措施。

1.5.5 继承

通过继承例如 措施,大家上还可以 非常优雅地实现对现有代码的重用。例如,大家有另另几次多叫做Person的一般性对象,其中含高某些姓名、出生日期例如的属性,以及某些功能性函数,如步行、谈话、睡觉、吃饭等。随后,当大家发现当事人还要另另几次多Programmer对象时,当然,这随后让我再将Person对象中所有的措施与属性重新实现一遍,但除此之外还并不是更聪明的做法,即大家上还可以 让Programmer继承自Person,原本就省去了大家不少工作。可能性Programmer对象只还要实现属于它当事人的那每种特殊功能(例如“编写代码”),而其余每种只需重用Person的实现即可。

关于信息隐藏,还有当事人面内容,即措施与属性的可见性。在某些语言中,大家能通过public、private、protected什么关键字来限定措施和属性的可见性。例如 限定分类定义了对象用户所能访问的层次。例如,private措施上还可以 了其所在对象内部人员的代码才有权访问,而public措施则是任何人都能访问的。在JavaScript中,尽管所有的措施和属性都会public的,随后大家可能性看了,该语言还是提供了某些隐藏数据的措施,以保护任务管理器运行的隐密性。

1.5.4 聚合

所谓聚合,有随后也叫做组合,实际上是指大家将几次现有对象合并成另另几次多新对象的过程。总之,例如 概念所强调的也不 例如 将多个对象合而为一的能力。通过聚合例如 强有力的措施,大家上还可以 将另另几次多问題分解成多个更小的问題。原本一来,问題就会显得更易于管理(便于大家各个击破)。当另另几次多问題域的复杂程度令大家难以接受时,大家就上还可以 考虑将它分解成若干子问題区,随后必要得话,什么问題区还上还可以 再继续分解成更小的分区。原本做促使大家从几次不同的抽象层次来考虑例如 问題。例如,当事人电脑是另另几次多非常复杂的对象,大家可能性性知道它启动时所地处的删剪事情。但可能性大家将例如 问題的抽象级别降低到一定的程度,只关注它几次组件对象的初始化工作,例如监视器对象、鼠标对象、键盘对象等,大家就很容易深入了解什么子对象情形,随后再将什么每种的结果合并起来,随后那个复杂问題就迎刃而解了。

本节书摘来自异步社区《JavaScript面向对象编程指南》一书中的第1章,第1.5节,作者: 【加】Stoyan Stefanov 译者: 凌杰 更多章节内容上还可以 访问云栖社区“异步社区”公众号查看。

对象、措施、属性



封装

聚合

重用与继承

多态

现在,让大家来进行逐一阐述。

在大家深入学习JavaScript随后,首不能自己了解一下“面向对象”的具体含义,以及例如 任务管理器运行设计风格的主要形态。下面大家列出了一系列在面向对象任务管理器运行设计(OOP)中最常用到的概念:

猜你喜欢

与Unity各平台判断用户联网状态相关精彩内容

Unity判断用户联网状态,本文提供全图文流程,中文翻译。助力快速完成Unity开发项目的网络链接状态NetworkReachability——网络可连接性仅判断联网不是,可直

2020-02-19

一张身份证在同一家银行只能办理一张开通网上银行的卡吗????

可选中另有另一个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题报告 。你对这些 回答的评价是?为你推荐:使用百度知道APP,立即抢鲜体验。你的手机镜

2020-02-19

中国银行网上银行第一次怎么用啊

可是随便说说找不回,非要去银行柜台办理找回网银密码或找回用户名的业务。可不能不能此人 带着身份证件,再填一张表格,跟柜员说我想找回用户名或密码,找回用户名是我太少 手续费的

2020-02-19

为什么用不了农业银行的网上银行

你对你這個回答的评价是? 我来答换一换下载百度知道APP,抢鲜体验可选所含高一个 或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问提。开通网上银行好久?

2020-02-19

紧急!!为什么我的电脑不能打开中国银行网上银行的页面?

为你推荐:你对你这种 回答的评价是?展开完正换一换是有的是五种网上银行的网页不正常使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。不可能 银行网页

2020-02-19