1.什么是面向对象

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

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

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

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


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

2.1类/实例/成员/方法/实例成员/静态类

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

  1. :龚先生的设计图纸就是类【你也可以把类理解成一个constructor[构造器]】
  2. 实例(对象):龚先生根据图纸制造出来的锅就是实例【实例其实就是对象,只不过在面向对象中叫做实例】
  3. 成员(属性):龚先生的图纸里,例如颜色、用料等,这些被称为成员
  4. 方法(函数):龚先生图纸里,例如炒菜()、煮菜()
  5. 实例成员:也就是实例的属性,比如日天锅的颜色
  6. 静态类:无法实例化的类,龚先生日后可能会搞出一些奇怪的图纸,这些图纸根本逻辑可能就是错的,以至于根据这个图纸是造不出来锅的

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"

bluesboneW
784 声望79 粉丝

今天,你帮助了社区