您的位置:首页 > 编程语言 > Java开发

Java编程思想 学习笔记(1)

2010-11-07 11:29 274 查看
第一章对象引论

抽象过程

1.万物皆为对象2.程序是对象的集合,它们彼此通过发送消息来调用对方.3.每个对象都拥有由其它对象所构成的存储.4.每个对象都拥有其类型(Type).5.某一特定类型的所有对象都可以接收(Receive)同样的消息。

每个对象都有一个接口

必须有某种方式产生对对象的请求,使对象完成诸如完成一笔交易、在屏幕上画图、打开开关之类的任务。每个对象都只能满足某些请求,这些请求由对象的接口(Interface)所定义,决定接口的便是类型(Type)。接口定义了你能够对某一特定对象发出的请求。但是,在程序中必须有满足这些请求的代码。这些代码与隐藏的数据一起构成了实现(implementation)。

每个对象都提供服务

被隐藏的具体实现

复用具体实现

最简单的复用某个类的方式就是直接使用该类的一个对象,此外你也可以将该类的一个对象置于某个新的类中。我们称其为“创建一个成员对象”。新的类可以由任意数量、任意类型的其它对象以任意可以实现新的类中想要的功能的方式所组成。因为你在使用现有的类合成新的类,所以这种概念被称为组合(composition),如果组合式动态发生的,那么它通常被称为聚合(aggregation)。

由于继承在面向对象程序设计中如此重要,所以它经常被高度强调,于是程序员新手就会有这样的印象:处处都应该使用继承。这会导致难以使用并过分复杂的设计。实际上,在建立新类时,你应该首先考虑组合,因为它更加简单而灵活。如果你采用这种方式,你的设计会变得更加清晰。一旦有了一些经验之后,你便能够看透必须使用继承的场合。

继承:复用接口

有两种方法可以使基类与导出类产生差异。第一种方法非常直接:直接在导出类中添加新方法。这些新方法并不是基类接口的一部分。这意味着基类不能直接满足你的所有需求,因此你必需添加更多的方法。第二种以及其它使导出类和基类之间产生差异的方法是改变现有基类的方法的行为。这被称之为重载(overriding)。

伴随多态的可互换对象

为了执行后期绑定,Java 使用一小段特殊的代码来替代绝对地址调用。这段代码使用在对象中存储的信息来计算方法体的地址.

抽象基类和接口

你不希望任何人创

建基类的实际对象,而只是希望他们将对象向上转型到基类,所以它的接口将派上用场。这是通过使用abstract 关键字把类标识成为抽象类来实现的。如果有人试图创建一个抽象类的对象,编译器都会加以阻止.

你也可以使用 abstract 关键字来描述尚未被实现的方法,就象一个存根,用来表示“这是一个从此类中继承出的所有类型都具有的接口方法,但是此刻我没有为它设计任何具体实现。”抽象方法只能在抽象类内部创建,当该类被继承时,抽象方法必须被实现,否则继承类仍然是一个抽象类.

对象的创建、使用和生命周期

为了追求最大的执行速度,对象的存储空间和生命周期可以在编写程序时确定,这可以通过将对象置于堆栈(它们有时被称为自动变量(automatic variable)或限域变量(scopedvariable))或静态存储区域内来实现。这种方式将存储空间分配和释放置于优先考虑的位置,某些情况下这样控制非常有价值,但是,也牺牲掉了灵活性,因为你必须在编写程序时知道对象确切的数量、生命周期和类型

第二种方式是在被称为堆(heap)的内存池中动态地创建对象。这些问题的答案只能在程序运行时相关代码被执行到的那一刻才能确定。如果你需要一个新对象,你可以在你需要的时刻直接在堆中创建。因为存储空间是在运行时刻被动态管理的,所以需要大量的时间在堆中分配存储空间,这可能要远远大于在堆栈中创建存储空间的时间。

Java完全采用了第二种方式6。每当你想要创建新对象时,就要使用new关键字来构建此对象的动态实例。

Java 提供了被称为“垃圾回收器(garbage collector)”的机制,它可以自动发现对象何时不再被使用,并继而销毁它。垃圾回收器非常有用,因为它减少了你必须考虑的议题和你必须编写的代码。更重要的是,垃圾回收器提供了更高层的保障,可以避免暗藏的内存泄漏问题.

集合(collection)与迭代器(iterator)

向下转型(downcasting)与模板/泛型(template/generic)

确保正确清除

Java 的垃圾回收器被设计用来处理内存释放问题(尽管它不包括清除对象的其他方面)。垃圾回收器“知道”对象何时不再被使用,并自动释放该对象的内存.

垃圾回收与效率和灵活性

异常处理:处理错误

并发(concurrency)

在程序中,这些彼此独立运行的部分称之为线程(thread),上述概念被称为“并发(concurrency)”或“多线程(multithreading)”。

持久性 轻量级持久性可以通过对象序列化
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: