构造函数的前世今生

前言:当我们在讨论一个新名词、一个新概念或一个新理论新思想时,其实我们更应该先考虑一下这个新事物是从哪里产生的?是为了解决什么问题而提出来的?或者说没有这一新理论,原来的旧理论哪里不方便了?……

也许我们在思考上面问题的过程中,原本困扰我们的那些疑问也就迎刃而解了。

好了,废话不多说 ,我们就用这个方法来解决一下题目所提出的新名词——构造函数

构造函数是从哪里提出来的?

:这一概念是来自于程序设计语言中面向对象这一思想,在构造类的时候被提出的,是由类引出的。在类实例化时,程序为每个对象都创建了一个默认的初始化方法,而这个方法被称为构造函数。

从构造函数的前世说起

在面向对象这一思想提出后,最吸引人的概念就是抽象类了。我们通过千辛万苦,过五关斩六将的毅力设计出一个类来,然后我们就可以肆意妄为的实例化对象,这让很多单身程序猿狠狠地爽了一把,因为我们不仅仅可以new出任意多的对象啦,我们还可以——然后……嘿嘿嘿,你懂的。

Java程序语言更是将面向对象——这一思想,发挥的淋漓尽致,在这里我们不谈具体的语言,思考问题的方式才是关键,有道无术,术尚可求,有术无道,止于术。这也就是说构造函数本身并不具吸引力,让我们疯狂的是大师们是如何提出这一思想的。还回到类这一主题,设计类最初的目的就是为了表示数据,使数据更加符合人的思维模式-----将数据隐藏而用其成员方法访问其内部成员变量(封装)。

所以大师们在刚开始设计类时,从人类的思维模式出发,将类一般划分成了两个部分:成员变量和成员函数(成员方法),为了得到这一原本的目的,大师们在设计它的时候,通常的做法是把成员变量设置成私有,而把成员方法设置成公开。这样我们大家可以通过实例化对象,然后用其成员方法来操纵其成员属性,这一种方式很好地体现了保护作用的特点——将数据隐藏。

好,你马上要问了,那为什么我们非要将数据隐藏呢?非常好,你已经get到了我们开篇讲到的那种苏格拉底式的精神了。

:将数据隐藏是为了更高效的工作,在企业中,我们都知道分工明确是非常重要的,尤其是大公司更是如此。那为什么将数据隐藏就能提高我们的工作效率呢?当然,将数据隐藏,我们通过一个一个的函数名调用而不必懂得函数内部的工作原理才能完成工作那不是更快,何乐而不为呢?然而这个优点只是其一。当这一思想在实际的应用道路上曲折前行时,因为分工明确了,我们程序员更加专注于自己的任务了,人们发现公司整个系统bug减少了,安全性更高了……既然这样,那我们就大刀阔斧的用这一思想理论吧!于是乎,这一思想势如破竹,更以迅雷不及掩耳之势在短短的几年内就统治了几乎所有现在流行的高级程序语言。

构造函数的开场白

说了这么多,可与构造函数并没有半毛钱的关系啊!不要急,该它出场的时候它自然就出场了,不是不到,时间未到。当我们废了九牛二虎的力气终于将一个类设计出来时,但接着问题来了,怎么赋值呢?你可能会自然地想到像下面这样的赋值(初始化)方式:

class Person {
    int id;
    string name;
}

Person girl = {123, "LostArt"};

但,我现在告诉你,这样是肯定不可行的,或者说是暂时还不可行的。那为什么呢?很明显,如果数据是公有的,就可以这样了,但问题是:数据不是公有的。如果数据是公有的,这明显违背了当初设计类时的一个主要初衷——隐藏数据。好好的一个girl ,你竟然让大家看到了她里面的构造(结构),你懂的,这是万万使不得的呀!那该如何才能使得呢?最简单的办法就是你自己在刚才设计好的类里面,再多添加一个赋值的方法,让大家通过这个方法来初始化。不管是谁,在最开始用这个Person类时,必须先调用你预先写好的这个赋值方法。

现在用符合人的思维想一下,既然在类设计成时,如果实例化,都要先调用这个方法,那为什么不在设计这个面向对象语言开始时,事先让编译器自动的为你定义的类赋值呢?或者说你懒得自己调用自己的这个赋值方法了,因为这是一个很麻烦的事情,如果能让程序默认地为你赋值,那何乐而不为呢?好了,我们聊到这里,时机已成熟,构造函数这一概念已经呼之欲出了。

构造函数的出生

大师们为了表示这个赋值函数很特别,就特别地为这个特别的函数起了一个特别的名字——构造函数,而且大师们还赋予了它一些特别的性质

  • 函数名必须与类名相同。
  • 函数没有返回类型,也不能定义为void,在函数名前面不声明方法类型。
  • 函数的主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域。

后记:
那大师们为什么用构造一词呢?能不能换一个词呢?答案是肯定的,然而从艺术的角度看,构造一词真的再合适不过了。见名知意,一说构造,你马上会想到通过一个模具,然后铸成了一个实实在在的东西。那么,在计算机程序语言中类不就是一个模具(模板)吗,而实例化的对象刚好就是那个实实在在的东西了。这个词用的恰到好处,多一分显得抽象多余,少一分则显得表达不足。

构造函数我们明白了,我们好像又发现一个新现象,艺术不分学科,不分国界。而这个艺术就是所有学科的灵魂了。说到这里,不得不赞叹大师就是大师,已经能做到学科间的融会贯通了。而那些所谓的隔行如隔山的说法只是我们管中窥豹罢了。想要一览庐山的真正瑰丽面貌,还是要走出山中,站在不同的角度去欣赏去发现才行。

真心希望在摸索艺术道路上前行的人都能成为这样的大师,在这个浮躁的年度里能够坚持探讨艺术的本源,触摸到那个已经失落很久了的艺术之灵魂。蓦然回首,那人却在灯火阑珊处,刚刚好。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 222,252评论 6 516
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,886评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,814评论 0 361
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,869评论 1 299
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,888评论 6 398
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,475评论 1 312
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 41,010评论 3 422
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,924评论 0 277
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,469评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,552评论 3 342
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,680评论 1 353
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,362评论 5 351
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,037评论 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,519评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,621评论 1 274
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 49,099评论 3 378
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,691评论 2 361

推荐阅读更多精彩内容

  • C++文件 例:从文件income. in中读入收入直到文件结束,并将收入和税金输出到文件tax. out。 检查...
    SeanC52111阅读 2,799评论 0 3
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,664评论 18 399
  • 11月18日,青岛3度°。我在店里上着12小时的班领着80块钱的薪水,写着英语四级模拟题。风吹的有些冷,所...
    莫花前阅读 317评论 2 6
  • 网上的段子都说,最近的天气晴好,那是党的光辉,确实如此! 11月了落叶飘飘,屋前的大树叶子都黄了。 最近心心念念想...
    闲着也是闲着lily阅读 427评论 2 1