对象入门
1.1抽象的进步
面向机器的进步到面向问题
- 每个对象都有自己的存储空间,可容纳其他对象
- 每个对象都有一个类型:每个对象都是某一个类的实例
- 同一类所有对象都能接收相同的信息
1.2对象的接口
也就是对象的句柄,可以对对象进行的操作
1.3实现方案的隐藏
Interface:只定义可以发出哪些请求,但在某些地方存在着代码满足这些请求:隐藏的实现
- 这样做有两个好处
- 安全性:防止程序员接触他们不该接触的东西
- 可修改:后续对代码进行修改,由于接口和实现方法隔离开来,只要用户重新链接一下就可以,不必担心出问题
关键字
- public
- 后续的定义任何人均可以使用
- private
- 意味着除了自己,类型的创建者,以及类型的内部函数成员,其他任何人都不能访问
- protected
- 继承的类可访问受保护的成员,但不能访问私有成员
- friendly
- 意味着只能在包的范围内使用
1.4 方案的重复使用
创建一个成员对象:将一个类的对象置入一个新类中
eg:比如有一个Class灯泡,现在想创建一个Class房子:那么就在Class中新建一个灯泡的对象
成员对象:一般设置为private
多在新建类的时候组织对象
,而不
是继承,一旦想到用继承就要想到这一点
1.5 继承
继承通过extends
关键字来实现
相当于创建了一个新类,集成了现有类型的所有成员(包括private,虽然不能被访问)
而后为了将衍生类和基础类区分开
- 为衍生类添加新的函数
- 改变基础类一个现有函数的行为
基础类位于顶部,衍生类在下方展开:上溯造型(Upcasting)
void doStuff(Shape s){
s.erase();
s.draw()
}
Circle c = new Circle();
Triangle t = new Triangle();
doStuff©;
doStuff(t);
doStuff()会自动良好地工作
1.6 动态绑定
在draw()消息发给一个匿名shape的时候,根据shape句柄当时链接的实际类型,而采取正确的动作。(画圆就是画圆,画三角形就是画三角形)
多形性:不知道对方的具体类型是什么,但仍然能够采取正确的动作。
有时候我们不希望有任何人创建基础类的对象
使用abstract:把这个类变成抽象的。
也可创建抽象方法:尚未实现,继承这个类的衍生类必须实现它
1.7 对象的创建和存在时间
-
Java Stack
- 一块用于存放临时变量的地方
- 比Java heap(内存堆)要小
- 其中变量在进入
函数运行
到它的时候创建,在函数结束后释放
-
Java Heap
- 对象存放的地方
- 当
程序运行时
创建 - 当其满了的时候(很容易),内存回收机制就会发生作用
- 访问这里的内容比访问栈慢
1.7.2 Java是一个单根结构
1.7.3 集合库与方便使用集合
单根结构:所有都继承自Object类
1.8 违例控制
- 违例(EXception)是一个特殊的对象
- 会从产生错误的地方抛出来
- 有一个违例控制器会进行捕捉并进行处理
1.9 多线程
C/S模型
刚开始的服务器-浏览器模型只能够处理一些静态页面,这样增加了带宽的负担,并且响应时间长(为什么p41)
而后,出现了插件,将其插入到HTML的某一个位置的代码,这样就可以进行一些编程
出现了JavaScript,它与Java没有任何关系
还有Java的Applet(程序片),解决客户端编程问题,作为 Web 页的一部分,程序片代码会自动下载回来(这和网页中的图片差不多)。激活程序片后,它会执行一个程序