《JavaScript面向对象编程指南(第2版)》——1.6 面向对象的程序设计

  • 时间:
  • 浏览:0
  • 来源:5分PK10APP下载_5分PK10APP官网

1.6.3 封装

封装是曾经 与OOP相关的概念,其主要用于阐述对象中所含高的内容。封装概念通常由两帕累托图组成。

1.6.1 对象

既然这人 应用系统进程设计风格叫做面向对象,那么 其重点就应该在对象上。而所谓对象,实质上日后指“事物”(包括人和物)在应用系统进程设计语言中的表现形式。这里的“事物”可不还日后任何东西(如某个客观处于的对象,将会一点较为抽象的概念)。例如,对于猫这人 常见对象来说,给我们歌词 歌词 都都 可不还要都看它们具有一点明确的特征(如颜色、名字、体型等),能执行一点动作(如喵喵叫、睡觉、躲起来、逃跑等)。在OOP语义中,哪几种对象特征都叫做属性,而哪几种动作则被称为最好的方法。

1.6.5 继承

通过继承这人 最好的方法,给我们歌词 歌词 都都 可不还要非常优雅地实现对现有代码的重用。例如,给我们歌词 歌词 都都 有有1个叫做Person的一般性对象,其含高高一点姓名、出生日期例如的属性,以及一点功能性函数,如步行、谈话、睡觉、吃饭等。日后,当给我们歌词 歌词 都都 发现当事人还要有1个Programmer对象时,当然,这曾经 给你再将Person对象中所有的最好的方法与属性重新实现一遍,但除此之外还有四种 更聪明的做法,即给我们歌词 歌词 都都 可不还要让Programmer继承自Person,曾经 就省去了给我们歌词 歌词 都都 不少工作。将会Programmer对象只还要实现属于它当事人的那帕累托图特殊功能(例如“编写代码”),而其余帕累托图只需重用Person的实现即可。

在传统的OOP环境中,继承通常指的是类与类之间的关系,但将会JavaScript中不处于类,日后它的继承不会 了处于在对象之间。

本节书摘来自异步社区《JavaScript面向对象编程指南(第2版)》一书中的第1章,第1.6节,作者:【加拿大】Stoyan Stefanov著,更多章节内容可不还要访问云栖社区“异步社区”公众号查看

但给我们歌词 歌词 都都 要明白,JavaScript与C++或Java这人 传统的面向对象语言不同,它实际上压根儿那么 类。该语言的一切都会 基于对象的,其依靠的是一套原型(prototype)系统。而原型四种 实际上也是四种 对象,给我们歌词 歌词 都都 底下也会再来完全讨论这人 现象。在传统的面向对象语言中,给我们歌词 歌词 都都 一般会曾经 描述当事人的做法:“我基于Person类创建了有1个叫做Bob的新对象。”而在这人 基于原型的面向对象语言中,给我们歌词 歌词 都都 则要曾经 描述:“我将现有的Person对象扩展成了有1个叫做Bob的新对象。”

现在,给我们歌词 歌词 都都 就来完全了解每个概念。当然,将会您在面向对象应用系统进程设计方面是有1个新手,将会不会 了选者当事人算不算真的理解了哪几种概念,那日后必太过担心。曾经 让给我们歌词 歌词 都都 会通过一点代码来为您具体分析它们。尽管哪几种概念说起来好像很错综复杂、很高级,但一旦给我们歌词 歌词 都都 进入真正的实践,事情往往就会简单得多。

给我们歌词 歌词 都都 可不还要试一下。例如,在“The black cat sleeps on my head”这人 说说中,“the cat”(名词)日后有1个对象,“black”(形容词)则是有1个颜色属性值,而“sleep”(动词)则代表有1个动作,也日后OOP语义中的最好的方法。甚至,为了进一步证明这人 移就的合理性,给我们歌词 歌词 都都 也可不还要将说说中的“on my head”看做动作“sleep”的有1个限定条件,日后,它也可不还要被当做传递给sleep最好的方法的有1个参数。

关于信息隐藏,还有当事人面内容,即最好的方法与属性的可见性。在一点语言中,给我们歌词 歌词 都都 能通过public、private、protected哪几种关键字来限定最好的方法和属性的可见性。这人 限定分类定义了对象用户所能访问的层次。例如,private最好的方法不会 了其所在对象外部的代码才有权访问,而public最好的方法则是任何人都能访问的。在JavaScript中,尽管所有的最好的方法和属性都会 public的,日后给我们歌词 歌词 都都 将会都看,该语言还是提供了一点隐藏数据的最好的方法,以保护应用系统进程的隐密性。

给我们歌词 歌词 都都 还可不还要找到一点例如情况,例如Book是由有1个或多个author对象、publisher对象、若干chapter对象以及一组table对象等组合(聚合)而成的对象。

例如,当事人电脑是有1个非常错综复杂的对象,给我们歌词 歌词 都都 不将会知道它启动时所处于的完全事情。但将会给我们歌词 歌词 都都 将这人 现象的抽象级别降低到一定的程度,只关注它有有几个组件对象的初始化工作,例如显示器对象、鼠标对象、键盘对象等,给我们歌词 歌词 都都 就很容易深入了解哪几种子对象情况,日后再将哪几种帕累托图的结果合并起来,曾经 那个错综复杂现象就迎刃而解了。

1.6.4 聚合

所谓聚合,有曾经 也叫做组合,实际上是指给我们歌词 歌词 都都 将有有几个现有对象合并成有1个新对象的过程。总之,这人 概念所强调的日后这人 将多个对象合而为一的能力。通过聚合这人 强有力的最好的方法,给我们歌词 歌词 都都 可不还要将有1个现象分解成多个更小的现象。曾经 一来,现象就会显得更易于管理(便于给我们歌词 歌词 都都 各个击破)。当有1个现象域的错综复杂程度令给我们歌词 歌词 都都 难以接受时,给我们歌词 歌词 都都 就可不还要考虑将它分解成若干子现象区,日后必要说说,哪几种现象区还可不还要再继续分解成更小的分区。曾经 做不不利于给我们歌词 歌词 都都 从有有几个不同的抽象层次来考虑这人 现象。

1.6.2 类

在现实生活中,例如对象之间往往都会 一点一起去的组成特征。例如蜂鸟和老鹰都具有鸟类的特征,日后它们可不还要被统称为鸟类。在OOP中,类实际上日后对象的设计蓝图或制作配方。“对象”这人 词,给我们歌词 歌词 都都 有曾经 也叫做“实例”,很多给我们歌词 歌词 都都 可不还要说老鹰是鸟类的有1个实例2。给我们歌词 歌词 都都 可不还要基于同有1个类创建出一点不同的对象。将会类更多的是四种 模板,而对象则是在哪几种模板的基础上被创建出来的实体。

除此之外,这人 术语中还有另一层信息隐藏的概念,这完都会 当事人面的现象。日后,给我们歌词 歌词 都都 在理解这人 概念时,还要要留意它在OOP中的具体语境。

1.6.6 多态

在曾经 的例子中,给我们歌词 歌词 都都 的Programmer对象继承了上一级对象Person的所有最好的方法。这原因这人 有1个对象都实现了“talk”等最好的方法。现在,给我们歌词 歌词 都都 的代码含高高1个叫做Bob的变量,即便是在给我们歌词 歌词 都都 我什么都那么乎 它是有1个Person对象还是有1个Programmer对象情况下,也依然可不还要直接调用该对象的“talk”最好的方法,而我不要 说担心这会影响代码的正常工作。例如这人 不同对象通过相同的最好的方法调用来实现所有人 行为的能力,给我们歌词 歌词 都都 就称之为多态。

此外,给我们歌词 歌词 都都 还有有1个口语方面的移就1。

以有1个MP3播放器为例。将会给我们歌词 歌词 都都 假设它是有1个对象,那么 作为该对象的用户,给我们歌词 歌词 都都 无疑还要一点例如于像按钮、显示屏曾经 的工作接口。哪几种接口会帮助给我们歌词 歌词 都都 使用该对象(如播放歌曲例如)。至于它们外部是怎么能否工作的,给我们歌词 歌词 都都 我不要 说清楚,日后大多数情况下然不会在乎哪几种。换句话说,哪几种接口的实现对给我们歌词 歌词 都都 来说是隐藏的。同样的,在OOP中也是那么 。当给我们歌词 歌词 都都 在代码中调用有1个对象的最好的方法时,无论该对象是来自给我们歌词 歌词 都都 当事人的实现还是某个第三方库,让给我们歌词 歌词 都都 会 还要知道该最好的方法是怎么能否工作的。在编译型语言中,给我们歌词 歌词 都都 甚至都无法查看哪几种对象的工作代码。将会JavaScript是四种 解释型语言,源代码是可不还要查看的。但至少在封装概念上它们是一致的,即给我们歌词 歌词 都都 只还要知道所操作对象的接口,而我不要 说去关心它的具体实现。

在深入学习JavaScript曾经 ,给我们歌词 歌词 都都 首真难了解一下“面向对象”的具体含义,以及这人 应用系统进程设计风格的主要特征。下面给我们歌词 歌词 都都 列出了一系列在面向对象应用系统进程设计(OOP)中最常用到的概念:

当有1个对象继承自曾经 对象时,通常会往其中加入新的最好的方法,以扩展被继承的老对象。给我们歌词 歌词 都都 通常将这人 过程称之为“B继承自A”将会“B扩展自A”。另外对于新对象来说,它也可不还要根据当事人的还要,从继承的那组最好的方法中选者有有几个来重新定义。曾经 做我不要 说会改变对象的接口,将会其最好的方法名是相同的,只不过当给我们歌词 歌词 都都 调用新对象时,该最好的方法的行为与曾经 不同了。给我们歌词 歌词 都都 将这人 重定义继承最好的方法的过程叫做覆写。

猜你喜欢

2018上半年有事业单位招聘吗?有的话是什么时候?

扫描二维码下载可选中另三个 多或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问提。换一换你对你这些 回答的评价是?中公教育是一家全国性综合职业教育企

2020-03-22

架构之路:从管理者的角度看问题

只能 管理的本质是那些?那些才是你这个有效的管理?管理的精髓是那些?……你说歌词 你这个 制度好!对你当然好了,但manager心里苦啊。虽然任何有三个小制度就有利弊参半

2020-03-22

五个问题的简短回复【调试、求职疑虑、编程能力提高、做题】

【两根评论】(有读者按《CodeBlocks调试功能快捷教程》走,发现走不下去。核实,意识到可能性是Code::Blocks中的一还还有一个Bug。)初学C++,我敲教材上复杂

2020-03-22

微信小程序正式上线 下一波红利来临?

在张小龙看来,移动互联网的下一站是“唾手可得”。6.小系统线程切换:小系统线程支持挂起请况,即多窗口概念,用户可不并能把小系统线程先挂起,而且做别的事情,在需用你这名小系统线程

2020-03-22

游客vqwytl6gp2ayy的主页

flink运营若有阿里后边件(Aliware)官方账号周晓,阿里云数据库运营负责人文章:11丨粉丝:27626丨话题:2目前在阿里巴巴后边件技术部EDAS团队从事开发工作分布式

2020-03-21