对象导论
Java编程细想笔记
- 万物皆可对象
- 程序是对象的集合,他们通过发送消息来告诉彼此所要做的
- 每个对象都有自己的有其他对象所构成的存储
- 每个对象都拥有其类型
- 某一特定的所有对象都可以接收同样的消息
对象具有状态、行为和标识
每一个对象都可以拥有内部数据和方法
每一个对象都可以唯一地和其他对象分开(都有一个唯一的地址)
类具有相同数学(数据元素)和行为(功能)的对象集合,所以一个类实际上就是一个数据类型
-
将对象想象为 “服务的提供者”(有助于提高对象的内聚性)
java用三个关键字在类的内部设定边界:public private protected
- public:表示紧随其后的元素对任何人可用
- private:表示除类型创建者和类型内部方法之外的人都不能访问的元素
- protected:与private作用相当,差别仅在于继承的类可以访问protected,但是不能访问privae成员
继承
继承使用基类型和导出类型的概念表示这种类型之间的相似性,一个基类型包含其所有导出类型所享有的特性和行为
可以通过继承来构建一个类型层次结构,并以此来表示待求解的某种类型的问题
在继承现有类型时也就创造了新类型(不仅包含了现有类型的所有成员,更重要的是他复制了基类的接口)
extends(继承) overriding(覆盖)
- is a
- is like a
多态
处理类型的层次结构时,经常想把一个对象不当作他所属的特定类型对待,而是将其当作基类的对象来对待
继承
所有类都继承与object,单继承结构使得所有对象都具备某些功能。所有对象都可以容易的在堆上创建,参数传递也变得简化、垃圾回收其的实现也变得容易。
容器
容器也成为集合,在任何时候都可扩充自己以容纳你置于其中的所有东西。因IC不需要知道将来会把多少对象置于容器中,只需要创建一个容器UI小,然后让他处理所有细节。
- 不同的容器提供了不同类型的接口和外部行为。(栈堆相比于队列就具备不同的接口和行为,也不同于集合和列表的接口行为)
- 不同的容器对应某些操作具有不同的效率(LinkList ArrayList)
参数化类型
容器只存储Object,所以当讲对象引用置入容器是,他必须向上转型为object。
- 向上转型是安全的,向下不安全
ArrayList <Shape> shapes= new ArrayList<shape>();
对象的创建和生命周期
- 对象的存储空间和生命周期可以在编写程序时确定,这可以通过将对象置于栈堆、限域变量、静态存储趋区域
- 在堆的内存池中动态创建对象(直到运行时才知道需要多少对象、生命周期、具体类型)存储空间在运行时动态管理,需要大量的时间在堆中分配存储空间>堆栈中创建存储空间的时间,创建堆存储空间的时间依赖于存储机制的设计
- Java完全采用了动态内存分配方式,只需要new关键字来构建此对象的动态实例
- Java的垃圾回收器被设计用来处理内存释放问题
异常处理:错误处理
Java内置了异常处理,而且强制必须使用它,是唯一可接受的错误报告方式
并发编程
Java的并发是内置于语言中的,JavaSE5增添了大量额外的库支持
Java与Internet
-
客户/服务器计算技术
客户/服务器系统的核心思想是:系统具有一个中央信息存储池,用来存储某种数据,他通常存在于数据库中,可以根据需要将它并发分给某些人员和机器集群。
-
Web就是一台巨型服务器
Web实际上就是一个巨型客户/服务系统
客户端编程
-
插件
它允许专家级的程序员不需要经过浏览器生产厂商的许可,就可以开发某种语言扩展,并将他们添加到服务器中。
-
脚本语言
脚本语言提供了更容易、更快捷的开发方式。
-
Java
Java不仅是一种功能强大的、安全的、跨平台的、国际化的编程语言,而且还在不断地被扩展,已提供更多的语言功能额类库,能够优雅地处理在传统编程语言中更难解决的问题,例如:并发、数据库访问、网络编程和分布式计算。
-
备选方案
Java applet
.NET和C#
Internet和intranet
服务器端编程
Java取得巨大成功的因素之一;(服务器发送请求,浏览器解析)
总结