资讯专栏INFORMATION COLUMN

深入浅出面向对象和原型【概念篇1】

djfml / 2651人阅读

摘要:龚先生是一位在当地非常有名气的厨师,但他对自己用的锅一直不太满意,于是打算自己造一个龚先生想好了。

1.什么是面向对象

面向对象是一种思维方式[与语言无关],教你如何思考代码
Object Oriented Programming
orient 的英文意思 是 使朝向
那么,面向对象不如说成是以对象为目标的一种编程思维方式

2.面向对象的主要概念浅析

好了,现在让我们进入正题

面向对象的难点之一就是它有一大堆的概念——类、实例、成员等等,为了让我们更好地理解这些概念,我们从一个故事讲起。

龚先生是一位在当地非常有名气的厨师,但他对自己用的锅一直不太满意,于是打算自己造一个
龚先生想好了。他的第一个锅必须要剑走偏锋,于是起名为“日天锅”,并且得是金色的,而且必须要用寒铁制造,方能展现实力
龚先生风风火火画好了一份设计图纸
    // 日天锅
    // ---------
    // 颜色:金
    // 用料:钛合金
    // 功能:炒菜()
日天锅造出来后,龚先生如有神助,手艺直线上升,日天锅的大名就此传开
某日,一土豪前来,让龚先生为他也定做一款日天锅,不过这次要镶嵌24颗钻石
龚先生欣然接受,并画好了第二份设计图纸,只是 在原有的基础上镶嵌了钻石
    // 镶钻日天锅
    // ---------
    // 镶嵌物:钻石
土豪把镶钻日天锅带回家后,瞬间得到了一众土豪太太和她的闺蜜圈的喜爱,大家纷纷询问能否批量生产,在原有的基础上加上煮菜功能
龚先生自然不会放过这个赚钱的机会,于是乎画出了第三份图纸, 只是在【镶钻日天锅】原有的基础上增加了新功能
    // 镶钻日天锅——土豪太太版
    // ---------
    // 新功能:煮菜()
从那以后龚先生再也没有炒过菜,而是专心致志进行着造锅业务,而且大力发展物流业务,努力早日让客户享受到“人在家中坐,锅从天上来”的顶级服务
2.1类/实例/成员/方法/实例成员/静态类

根据这个故事,我们来解释一下面向对象一些名字非常抽象的概念^_^:

:龚先生的设计图纸就是类【你也可以把类理解成一个constructor[构造器]】

实例(对象):龚先生根据图纸制造出来的锅就是实例【实例其实就是对象,只不过在面向对象中叫做实例】

成员(属性):龚先生的图纸里,例如颜色、用料等,这些被称为成员

方法(函数):龚先生图纸里,例如炒菜()、煮菜()

实例成员:也就是实例的属性,比如日天锅的颜色

静态类:无法实例化的类,龚先生日后可能会搞出一些奇怪的图纸,这些图纸根本逻辑可能就是错的,以至于根据这个图纸是造不出来锅的

2.2继承和封装 2.2.1继承

好吧,让我们来看看龚先生的锅的广告词

镶钻日天锅
这款锅不仅 继承了日天锅的金色和钛合金用料还有炒菜功能 ,而且还新增了24课钻石镶嵌于其上,你还在等什么?
下一款
钻石日天锅——土豪太太版
这款产品不仅拥有新功能煮菜,而且还 继承了日天锅的金色和钛合金用料还有炒菜功能镶钻日天锅的24颗钻石 ,你还在等什么?
2.2.2封装

让我们暂时远离一下龚先生和他该死的锅
封装的概念其实就是把一些复杂的东西封装成一个类——把细节隐藏起来
什么意思呢?
比如你拿到一个大补药方,里面让你把当归、人参、枸杞找来,每个两百克在一块儿煮一个时辰【大家别乱试,只是举个例子】,你只要通过你的大补药方,就能造出【实例化】大补药,而无需了解当归、人参、枸杞他们分别有什么作用,如何种植这些本就无需了解的细节
这就是封装的优势

3.轻松一刻
  // JavaScripter的代码
    var bluesbone = {name: "Bruce"}
  // Java程序员说
    // 不行!你的图纸呢?bluesbone这个实例怎么直接出来了?

    // 经过Java程序员的修改后
    var bluesbone = new Object()
    bluesbone.name = "Bruce"

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/107441.html

相关文章

  • 深入浅出面向对象原型概念2】

    摘要:墙裂建议您在看这篇文章之前阅读一遍我之前写的文章深入浅出面向对象和原型概念篇,因为此篇文章涉及到不少相关概念都在上篇文章里啦简单复习对象对象是老生常谈的概念了,在这里我们来简单复习一下对象内储存一个对象对象是一个储存一系列无序键值对的集合的 墙裂建议您在看这篇文章之前阅读一遍我之前写的文章深入浅出面向对象和原型【概念篇1】,因为此篇文章涉及到不少相关概念都在上篇文章里啦 1.1 简单...

    DevTTL 评论0 收藏0
  • 深入浅出面向对象原型概念3】—— 原型继承

    摘要:由一个问题引发的思考这个方法是从哪儿蹦出来的首先我们要清楚数组也是对象,而且是对象的实例也就是说,下面两种形式是完全等价的只不过是一种字面量的写法,在深入浅出面向对象和原型概念篇文章里,我们提到过类会有一个属性,而这个类的实例可以通过属性访 1.由一个问题引发的思考 let arr1 = [1, 2, 3] let arr2 = [4, 5, 6] arr1.c...

    levinit 评论0 收藏0
  • 深入浅出面向对象原型【番外——重新认识new】

    摘要:前言我们在深入浅出面向对象和原型概念篇在这篇文章中了解到了如何使用解决重复创建浪费内存的问题,其中的关键就是,那么这篇文章让我们来重新了解的前世今生一个苦逼年级主任的故事开学啦高一年级主任龚主任需要为全年级每一位理科班新生录入学号并为每一位 前言 我们在深入浅出面向对象和原型【概念篇2】在这篇文章中了解到了如何使用new Function解决重复创建浪费内存的问题,其中的关键就是new...

    Apollo 评论0 收藏0
  • SegmentFault 技术周刊 Vol.32 - 七夕将至,你的“对象”还好吗?

    摘要:很多情况下,通常一个人类,即创建了一个具体的对象。对象就是数据,对象本身不包含方法。类是相似对象的描述,称为类的定义,是该类对象的蓝图或原型。在中,对象通过对类的实体化形成的对象。一类的对象抽取出来。注意中,对象一定是通过类的实例化来的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 马上就要到七夕了,离年底老妈老爸...

    李昌杰 评论0 收藏0
  • SegmentFault 技术周刊 Vol.32 - 七夕将至,你的“对象”还好吗?

    摘要:很多情况下,通常一个人类,即创建了一个具体的对象。对象就是数据,对象本身不包含方法。类是相似对象的描述,称为类的定义,是该类对象的蓝图或原型。在中,对象通过对类的实体化形成的对象。一类的对象抽取出来。注意中,对象一定是通过类的实例化来的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 马上就要到七夕了,离年底老妈老爸...

    Lyux 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<