Java编程思想阅读笔记

JAVA 编程思想
第一章对象导论

第1章对象导论
1.1抽象过程
所谓”类型”是指”所抽象的是什么”,汇编语言是对底层机器的轻微抽象。许多所谓的“命令式”语言(Basic,C等)都是对汇编语言的抽象 。
面向对象的实质是:程序可以通过添加新类型的对象使自身适用于某个特定问题。oop允许根据问题来描述问题,每个对象看起来有点像一台微型计算机——它具有状态,还具有操作,用户可以要求对象执行这些操作。
五个基本特性:

  1. 万物皆对象
  2. 程序是对象的集合,它们通过发送消息告知彼此所要做的,可以把消息想象为对某个特定对象的方法调用请求。
  3. 每个对象都有自己的由其他对象所构成的存储。
  4. 每个对象都拥有其类型
  5. 某一特定的类型的所有对象都可以接收同样的信息,每一个对象在内存中都有一个唯一的地址。

1.2 每个对象都有一个接口
类描述了具有相同特性(数据,元素)和行为(功能)的对象集合,一个类实际上就是一个数据类型。一旦类被建立,就可以随心所欲地创建类的任意个对象,然后去操作它们,就像它们是存在于你的待求解问题中的元素样。
每个对象只能满足某些请求,这些请求由对象的接口所定义,决定接口的便是类型,
接口确定了某一特定对象所能发出的请求,但是,在程序中必须有满足这些请求的代码。

1.3 每个对象都提供请求
当正在试图开发成理解一个程序设计时,最好的方法之一就是将对象想象为“服务提供者”。程序本身将向用户提供服务,它将通过调用其他对象提供的服务来实现这一目的。你的目标就是去创建(或者最好在现有代码库中寻找)能够提供理想的服务来解决问题的一系列对象。

1.4 被隐藏的具体实现
类创建者的目标是构建类,这种类只能向客户端程序员暴露必须的部分,而隐藏其他部分。
Java用三个关键字在类的内部设定边界:public,private,protected,Java还有一种默认访问权限,当没有使用以上限定词时,他将发挥作用。这种权限通常被称为包访问权限,在包之外,这些成员如同指定了private一样。

1.5 复用具体实现
代码复用是面向对象程序设计语言最了不起的有点之一。
最简单地复用某个类的方式就是直接使用该类的一个对象,此外也可以将那个类的一个对象置于某个新的类中。我们称其为“创建一个成员对象”。新的类可以由任意数量,任意类型的其他对象以任意可以实现新的类中想要的功能的方式所组成。因为是在使用现有的类合成新的类,所以这种概念被称为组合,如果组合是动态发生的,那么它通常被称为聚合。组合经常被视为“has-a”(拥有)关系,就像“汽车拥有引擎”一样。
在建立新类时,应该首先考虑组合,一旦有了一些经验之后,便能看出必须使用继承的场合了。

1.6继承
源类(基类,超类或父类)
继承使用基类(父类)和导出类型的概念表示了这种类型之间的相似性,一个基类(父类)型包含其所有到处类型所共享的特征和行为。可以创建一个基类(父类)型表示系统中某些对象的核心概念,从基类型中导出其他类型来表示此核心可以被实现的各种不同方式。
当继承现有类型时,也就创建了新类型。这个新的类型不仅包括现有类型的所有成员(尽管private成员被隐藏起来,并且不可访问),而且更重要的是它复用了基类的接口。也就是说,所有可以发送给父类对象的消息同时也可以发送给导出类对象。由于通过发送给类的消息的类型可知类的类型意味着导出类与基类具有相同的类型。
由于基类和导出类具有相同的基础接口,继承类的对象不仅与基类拥有相同的类型,还拥有相同的行为。
两种方法可以使父类与导出类产生差异。① 直接在继承类中添加新的方法。② 改变现有父类的方法的行为,称之为覆盖。
要想覆盖某个方法,可以直接在导出类中创建该方法的新定义。

1.7 伴随多态的可互换对象
在处理类型的层次结构时,经常把一个对象当做其父类的对象对待。

1.8 单根继承结构
在oop中,所有的类最终都继承自单一的父类。这个终极父类的名字就是object。单根基承结构保证所有对象都具有某些功能。

1.9 容器
用在大多数语言中都具有的数组类型来实现相同的功能。通常被称为容器,也成为集合,在任何需要时都可以扩充自己以容纳你置于其中的所有东西,只需要创建一个容器对象,然后让它处理细节。
由于容器只存储object,所以当将对象引用置入容器时,它必须被向上转型为object,因此他会丢失其身份。当把它取回时,就获取了一个对object对象的引用。如何将它变回先前置入容器中时的具有实用接口的对象呢?那就是向下转型为更具体的类型——向下转型。

1.10 对象的创建和生命期
动态方式有这样一个一般性的逻辑假设:对象趋向于变得复杂所以查找和释放存储空间的开销不会对对象的创建造成重大打击。动态方式所带来的更大的灵活性正是解决一般化编程问题的要点所在。
Java完全采用了动态内存分配方式,每当想要创建对象时就要使用new关键字类构建此对象的动态实例。
对象生命周期,对于允许在堆栈上创建对象的语言,编译器可以确定对象存活的时间,并可以自动销毁它。如果在堆上创建对象,编译器就会对它的生命周期一无所知。
Java提供了被称为“垃圾回收器”的机制,它可以自动发现对象何时不再被使用,并继而销毁它。垃圾回收器被设计用来处理内存释放问题。
1.11 异常处理,处理错误
异常是一种对象,它从出错地点被“抛出”,并被专门设计用来处理特定类型错误的相应的异常处理器“捕获”。异常处理就像是与程序正常执行路径并行的,在错误发生时执行的另一条路径。异常提供了一种从错误状况进行可靠恢复的途径。

1.12 并发编程
对于大量其他问题,把问题切分成多个可独立运行的部分(任务),从未提高程序的响应能力。在程序中,这些彼此独立运行的部分被称为线程。计算机编程有个基本概念就是同一时刻处理多个任务的思想,许多程序设计问题都要求,程序能够停下来正在做的工作,转而处理某个其他问题,然后在返回主进程。上述概念被称为“并发”,Java的并发是内置于其语言中的。

1.13 Java与Internet
1. 客户/服务器计算技术
客户/服务器系统的核心思想是系统具有一个中央信息存储池,用来存储某种数据,它通常存在于数据库中。可以根据需要将他分发给某些人员或机器集群。
客户/服务器计算技术大概占了所有程序设计行为的一半。
2.web就是一台巨型服务器
Web浏览器就是一个观察器,因此他甚至不能执行最简单的计算任务。(另一方面,他却是最安全的,因为他在你的本地机器上不会执行任何程序,而这些程序有可能包含bug和病毒)
为解决这个问题,人们采用了各种不同方法。首先,图形标准得到了增强,剩下的问题通过引入在客户端浏览器中运行程序的能力就可以解决。这被称为“客户端编程”
3.客户端编程
插件;脚本语言JavaScript;Java;备选方案:applet.Macromedia的flex;.net和c#;internet与intranet
4.服务器编程
Java.php

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值