回顾
点拨
1.Java中的null使用
2.数组的下标
实战练习
1.冒泡排序
2.乱序排序
优化的冒泡排序。
学习小结
一、面向对象的程序
面向对象程序(Object-oriented programming,OOP)设计是继面向过程又一具有里程碑意义的编程思想,是现实世界模型的自然延伸。
1.结构化程序简介
早期:大量使用共享变量(全局变量)和goto语句,使得代码结构混乱,不易改错和复用。
后来:E.W.Dijikstra在1965年提出结构化程序设计,主要观点是自顶而下、逐步求精及模块化的程序设计方法,使用三种基本控制结构构造程序,任何程序都可由顺序、选择、循环这三种基本控制结构来构造。
面向过程编程(Procedure Oriented Programming,POP):编写不同目的的函数/过程的程序。
结构化程序 = 算法 + 数据结构
算法:用基本控制结构,顺序、选择、循环来实现。
数据结构:指数据以及其相应的存取方式。

2.面向对象程序设计简介
面向对象的思想主要是基于抽象数据类型(Abstract Data Type,ADT),考虑问题中各个对象之间的关系。
属性表示对象的数据,行为表示对象的方法(其作用是处理数据或同外界交互)。
面向编程达到了软件编程的三个主要目标:重用性、灵活性、扩展性。
程序 = 对象 + 消息传递
3.面向对象程序设计的基本特征
主要特征:封装性、继承性、多态性。
a.封装性(encapsulation)
封装是一种信息隐蔽技术,它体现于类的说明,是对象的重要特性。
b.继承性
继承性是之类共享其父类数据和方法的机制。
c.多态性
同一个消息被不同的对象接受时可产生完全不同的行动。
4.面向对象和面向过程的比较
a.两种编程范式之间的区别
- 面向过程:程序 = 算法 + 数据结构;
“自上而下,步步求精”,以过程为中心,以算法为驱动,不足之处不利于后期维护和扩展。
- 面向对象:程序 = 对象 + 消息传递;
先自定义数据结构——“类”,然后用该类型下的“对象”组装程序,对象之间通过“消息”进行通讯。此设计更易扩展,也更加符合现实世界的模型。不足之处,执行效率低于面向过程。

b.两种编程范式之间的联系
面向对象是由面向过程发展而来的,只是添加了它独有的特性。
对象 = 数据 + 方法
程序 = 对象 + 消息传递 = (数据 + 方法) + 消息传递
二、面向对象的基本概念
1.类(Class)
将具有相同属性及相同行为的一组对象称为类。是一种抽象的数据类型。
在面向对象程序设计中,类是一个独立的单位,它有一个类名,其内部包括成员变量,用于描述对象的属性;还包括类的成员方法,用于描述对象的行为。
2.对象(Object)
对象是类实例化后的产物。
对象的特征分:静态特征和动态特征
- 静态特征:对象的外观、性质、属性等。即变量。 
- 动态特征:对象具有的功能、行为等。即方法(method)。 
3.类和对象的关系
类是对某一类事物的描述,是抽象、概念上的定义;对象是实际存在的该类事物的个体,因而也被称作实例(instance)。
类相同,而对象各异。

三、类的声明与定义
1.类的声明
[标识符] class类名称
{
// 类的成员变量
// 类的方法
}
标识符可以是访问控制符,主要有四类:
①默认模式(default)
在默认模式下,不需为某个类、方法等加任何访问修饰符。此类方式声明的方法和类,只允许在同一个包(package)内是可以访问的。
②private(私有)
最严格修饰符,只被当前声明的类里内部访问。
③public(公有)
最宽松修饰符,不仅可以跨类访问,而且可以跨包访问。只需要导入(import)所需的包。
④protected(保护)
只能被类本身的方法和之类访问,即时之类在不同包中也可以访问。
也可以用final(无法改变、终态),不能被继承
2.类的定义
class 类名称{
数据类型 属性; // 0到多个属性
类名称(参数,···){ // 0到多个构造方法
}
返回值的数据类型 方法名称(参数1,参数2,···){ // 0到多个方法
程序语句;
return;
}
}
通常类里有,构造方法(constructor,构造器或构造函数)、属性和方法。构造方法是一种特殊的方法,专用于构造该类的实例(即与类同名的方法)。若用户未显式定义构造方法,Java编译器会默认提供无参构造方法。
注意: static修饰的成员不能访问没有static修饰的成员
思考
今天请假了,所以大白天就看书啦,看了好久概念的东东,头都晕了,要休息一会。哈哈······