Java编程思想《Thinking in Java》学习笔记

    大学时期从C++编程语言学起,然后一直在学习面向对象语言C#, 学习的过程仅仅停留在  “会用” 的层面,对于编程语言的 “设计思想” 思考甚少,以至于在读这本书之前,甚至无法从根本上解释为什么一定要有初始化函数、为什么要进行访问权限控制等问题。

    最近读了《Java编程思想》作为java的入门书,这本书读起来有种高屋建瓴的感觉。本文主要记录这本书读书笔记,首先对面向对象程序设计做一个概括,然后分别介绍面向对象的抽象、封装、 继承、多态等特性,争取对面向对象语言JAVA的设计思想有个清醒的认识。

1.面向对象编程(OOP)概述

    从机器代码、汇编语言、面向过程语言(C等)到面向对象语言是一个抽象化程度越来越高的过程,例如面向过程语言也要基于计算机结构进行设计,而面向对象语言则只需从要解决的实际问题进行建模。随着抽象的程度越来越高,入门起来也越简单。

    什么是对象?一个对象是相应“类型”的实例,“类型”是对待解决问题的抽象。例如要建立汽车模型,可能需要轮子、发动机等“类型”,则一个汽车对象就有轮子、发动机等对象共同组成。“类型”对应java中类的概念,用关键词class来表示。

        在面向对象编程的世界里,程序就是对象的集合,这些对象之间通过发送消息(即调用对象的方法)来通知要做的事。开发人员的目标就是将对象视为一个个服务提供者将需要实现的服务分解为对象的集合,然后创建出能够提供理想服务的这些对象。

2. 类的组合、继承

    想象一下当你终于写出来一个类,经过测试,它实例化出的对象能够提供理想的服务。这段代码的命运是否就结束了?结果就是开始思考如何能让写的类能够复用。就像积木一样,设计的形状越一般化,很多地方都可以用,像机器人的帽子部件不能组装身体。

    如果我们有一些可复用的类,则可以用它们合成一个新的类,实现组合服务。实现组合的方法就是将复用类的对象添加到当前类中。组合关系也称为 has-a 关系。 


    在创建了一个类A后,即使另一个类功能和它非常相似,也要新创建一个新类。那么能不能利用已有的类少写点代码呢?我们可以在A类的基础上复制一份,然后在这个副本上添加或修改一些功能来创建新类,通过继承便可以实现这一想法。

    例如形状类有绘制、擦除等方法,从形状类中可以继承出三角形、圆形、矩形等子类,每个子类中虽然一些方法和父类相同,但求面积的方法各异。

通过继承得到的子类的类型和父类相同。三角形也是形状。

3.多态

    有时不想将某个对象按照所属的特定类型来对待,而作为它的父类对象来对待。这样就可以写出不依赖特定类型的代码,代码就不会被新添加的子类影响,那么扩展子类就非常方便了。

    例如,形状类中的方法操作的都是泛化的形状,不管是三角形、圆形、还是其他各种形状。当从形状类中继承一个新形状五角星时,并不需要修改处理泛化形状的代码。

那么如果三角形想让泛化形状的方法绘制自己时,该怎么让编译器知道?

OOP中使用了后期绑定,当向对象发送消息时,调用的代码直到程序运行时才能确定。关于动态绑定的具体实现见《java学习笔记之动态绑定技术》。

4.访问控制

    为什么要进行访问控制?

    程序开发人员按照角色可以大致分为两类:创建工具类的生产者、在自己的程序中使用工具类的消费者。生产者创建的类往往只给消费者看到必要的一部分,而隐藏更多的实现细节。这样做一是生产者可以改动隐藏的细节而不影响类的使用,二是防止不专业的消费者对类中重要的实现细节进行破坏。

    例如现实当中的火锅底料一般只写着使用方法,而不会写具体的配方。因为对于普通的用户而言,只要根据食用方法来做就可以了,没必要了解其中各种调料的配比、熬制方法等细节。如果把火锅底料视作一个类,食用方法就是暴露给消费者的部分,配方就是实现细节。当配方稍作调整的时候,并不会影响用户的食用方法。

    java中用Public、private、protect设定访问权限。

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