第一章:绪论
1.1 java特征
- 简单性
- 面向对象:封装、继承、多态 (主要特征)
- 半编译,半解释:兼具编译执行的效率优势和解释执行的灵活性;提高了应用程序的可移植性:源程序、中间代码
Java源程序(.java) ——> 编译器编译 ——> 字节码(.class) ——> 解释器解释执行(JVM)
-
可移植性:一次编译,到处运行 (Java依赖于JVM实现跨平台性)
- Java的半编译、半解释的特征
- Java采用标准的独立于硬件平台的数据类型
-
安全性
Java的内存分配和引用模型对于程序员透明,完全由底层的运行系统控制;字节码验证
-
多线程
JAVA中线程的同步采用C.A.R.Hoare的临界区保护规则。
1.2语法概述
- 与C++一致的语法机制:数据类型、表达式、程序流控制、结构化、异常处理等
- 与C++不同的语法机制:类、接口(Interface)、程序包(Package)、自动内存回收以及多线程
- JAVA通过类只能实现单继承,多继承必须通过接口实现
- JAVA引进了abstract 和final修饰词
- 带abstract的类称为抽象类,只能作为父类使用, 不能直接产生实例对象。抽象方法只定义方法声明,没有方法体,抽象方法须在子类中实现
- 带final的类不能用作父类被继承, 带final的属性在定义时必须赋初值,成为常量,带final的方法将禁止子类对该方法的重写(Overriding)
- 接口(interface)
- 是一种彻底的抽象类,其中只能出现静态常量或抽象方法的定义。引入接口主要目的是实现多重继承功能,避免C++在多重继承语义上的复杂性
- 一个JAVA类可以实现(继承)多个接口
- 程序包(package)
- 程序包是一些相关类或接口的集合
- JAVA的可重用类都是以程序包的形式提供给开发人员使用的。开发人员可以定义自己的程序包。使用已有的程序包需通过 import 语句将程序包引入
- 创建包:package+包名.*;应该在程序第一句
- 多线程
- 使用其他编程语言实现多线程通常要调用操作系统提供的线程管理的API,这就产生了平台依赖性。Java在语言级支持多线程,忽略了操作系统多线程机制的差异,使软件具有更好的可靠性和可移植性
- 自动内存回收
- JAVA取消了指针类型,所有动态内存请求均通过new运算符,并且得到的不是指针而是引用。引用减少了出错的机会,同时使得系统自动进行内存回收成为可能
第二章:面向对象程序设计的基本概念
-
类和对象的关系:类实例化为对象,对象抽象为类
-
面向对象的三大特性:
- 封装性:基础
- 继承性:关键(单继承,多继承)
- 多态性:补充(编译时的多态性,运行时的多态性)
-
两种编程比较:
-
面向过程程序设计语言 = 运算符+语句+数据类型
-
面向过程程序设计 = 算法 + 数据结构
-
面向对象程序设计语言 = 封装性+继承性+多态性
-
面向对象程序设计 = 对象 + 对象 +对象
-
面向过程 | 面向对象 |
---|---|
强调结构化、模块化 | 强调对象化 |
以过程为出发点 | 以客观存在的事物为出发点 |
以数据结构为中心 | 以问题域中的事物(对象)为中心 |
本质为功能分解、算法分解 | 本质是对象分解 |
用计算机观点进行程序设计 | 模拟人类习惯的解题方法来进行程序设计 |
将数据与处理数据的过程相分离 | 将数据及对数据的操作方法封装在一起,作为一个对象 |
代码的可重用性差,维护困难 | 代码的可重用性,可扩充性好,维护方便 |