1.1 抽象过程
面向对象程序设计(Object-oriented Programming, OOP)
1.2 每个对象都有一个接口
因为类描述了具有相同特性(数据元素)和行为(功能)的对象集合,所以一个类实际上就是一个数据类型。
要有某种方式产生对对象的请求,使对象完成各种任务。
每个对象都只能满足某些请求,这些请求由对象的接口(interface)所定义,即接口确定了对某一特定对象所能发出的请求。
1.3 每个对象都提供服务
可以将对象理解为服务提供者,有助于提高对象的内聚性。
1.4 被隐藏的具体实现
访问控制:1.让客户端程序员无法触及他们不应该触及的部分;2.允许库设计者可以改变类内部的工作方式而不用担心会影响到客户端程序员。
Java权限修饰符:public,private,protected。这些访问指定词(access specifier)决定紧跟其后被定义的东西可以被谁使用。
public表示紧随其后的元素对任何人都可以使用;
private表示除了类型创建者和类型内部方法外的任何人都不能访问,如果外部有人试图访问private成员,就会在编译时得到错误;
protected关键字与private作用相当,差别仅在于继承的类可以访问protected成员,但是不能访问private成员;
Java中还有一种默认的访问权限default,当没写前三个修饰符的时候,默认就是这个。也被称为包访问权限,类可以访问在一个包中的其他类成员,但是包外的不行。
1.5 复用具体实现
最简单的复用某个类的方式就是直接使用该类的对象;
也可以将那个类的一个对象置于某个新的类中。新的类可以由任意数量、任意类型的其他对象以任何可以实现新的类中想要的功能的方式所组成,即使用现有的类合成新的类,所以称为组合。
1.6 继承
在创建一个类之后,即使另外一个类与其具有相似的功能,还是需要重新创建一个新的类,效率太低。
继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。
实际上继承者(称为导出类、继承类或子类)是被继承者(称为源类、基类、超类或父类)的特殊化,它除了拥有被继承者的特性外,还拥有自己独有得特性。
【注意】
子类拥有父类非private的属性和方法。
子类可以拥有自己属性和方法,即子类可以对父类进行扩展。
子类可以用自己的方式实现父类的方法。
有两种方法可以使父类和子类产生差异:1.直接在子类中添加新的方法;2.覆盖(重写)父类的方法。
1.7 伴随多态的可互换对象
在处理类型的层次结构时,经常想把一个对象不当作它所属的特定类型来对待,而是将其当作其基类的对象来对待。这使得人们可以编写出不依赖于特定类型的代码。
通过导出新的子类类型而轻松扩展设计的能力是对改动进行封装的基本方式之一。
在Java中动态绑定是默认的,不需要添加额外的关键字来实现多态。
1.8 单根继承结构
在Java中所有的类都是继承自单一的类:Object
在单根继承结构中的所有对象都具有一个共有接口,所以他们归根结底都是相同的基本类型;
单继承结构保证了所有对象都具有某些功能;
单继承结构使垃圾回收变得容易很多。
1.9 容器
对容器需要选择的原因:1.不同的容器具有不同的功能;2.不同容器处理问题的效率不同。
参数化类型就是一个编译器可以自动定制作用于特定类型上的类。
ArrayList shapes = new ArrayList();
1.10 对象的创建和生命周期
1.对象创建的方法:
1)将对象置于堆栈中(他们有时被称为自动变量)或限域变量或静态存储区域内来实现。这种方式将存储空间分配和释放置于优先考虑的位置,某些情况下这样控制有价值,但是也牺牲了灵活性,因为必须在编写程序时知道对象确切的数量、生命周期和类型。
2)在堆的内存池中动态得创建对象。在这种方式中,直到运行时候才知道需要多少对象,他们的生命周期如何,以及他们的具体类型是什么。这些问题的答案只有在程序运行时相关代码被执行的那一刻才知道。若需要创建一个对象,可以在需要的时刻直接在堆中创建。Java完全采用动态内存分配方式。每当要创建新的对象时,用new关键字来构建此对象的实例。
2.对象的生命周期:
对于允许在堆栈上创建对象的语言,编译器可以知道对象存活的时间,并可以自动销毁。若在堆上创建对象,编译器完全不知道对象的生命周期,这样可能会导致内存泄漏。Java提供了垃圾回收机制,它可以自动发现对象何时不再被使用,并且销毁它。这一点同所有对象都是继承自单根基类Object以及只能以一种方式创建对象(在堆上创建)这两个特性结合起来。垃圾回收器减少了所必须考虑的议题和必须编写的代码。
1.11 异常处理:处理错误
异常是一种对象,它从出错地点被“抛出”,并被专门设计用来处理特定类型错误的异常处理器“捕获”。异常处理就像是与程序正常执行路径并行的、在错误发生时执行的另一条路径。异常不能被忽略,所以它保证一定会在某处得到处理。
异常提供了一种从错误状况进行可靠恢复的途径。
1.12 并发编程
最主要的问题是共享资源:某个任务锁定某项资源,完成任务,释放资源锁,其他的任务可以使用这项资源。
1.13 Java和Internet
现在主要应用于B/S编程。
需要知道http和https的区别;在浏览器上输入一个地址后的运行过程。
网友评论