1. 类与对象
- 类定义了对象,对象是类的实体。
- 对象是实体,需要被创建,可以为我们做事情。
对象表达东西或事件,对象运行时响应消息(提供服务)。
对象=属性+服务
数据:属性或状态
操作:函数
封装:把数据和对数据的操作放在一起。 - 类是规范,根据类的定义来创建对象。
1.1 定义类
1.2 创建对象
new Machine();
Machine m = new Machine();
- 对象变量是对象的管理者
- .运算符
通过.运算符调用某个对象的函数
变量名.操作;
1.3 成员变量
-
类定义了对象中所具有的变量,这些变量称作成员变量。
-
每个对象有自己的变量,和同一个类的其他对象是分开的。
-
函数与成员变量
在函数中可以直接写成员变量的名字来访问成员变量。
函数是通过对象来调用的。v.insertMoney();这次调用临时建立了insertMoney()和v之间的关系,让InsertMoney()内部的成员变量指的是v的成员变量。 -
this:this是成员函数的一个特殊的固有的本地变量,它表达了调用这个函数的那个对象。
this的理解:
class{
int price; //成员变量
public void sum(int price){
this.price = price; //这个大括号内的price默认是指函数参数,要想指外部成员变量,需要加this
}
}
在一个成员函数内部调用另一个成员函数,可以省略this -
本地变量:定义在函数内部的变量是本地变量。
本地变量的生存期和作用域都是函数内部。
成员变量的生存期是对象的生存期,作用域是类内部的成员函数。 -
成员变量定义初始化
成员变量在定义的地方就可以给出初始值。没有给出初始值的成员变量会自动获得0值。对象变量的0值表示没有管理任何对象,也可以主动给null值。
定义初始化可以调用函数,甚至可以使用已经定义的成员变量。
1.4 构造函数
class V{
int i;
V(){ // 无参构造函数
}
V(int i){ //含参构造函数
this.i = i;
}
}
- 如果有一个成员函数的名字和类的名字完全相同,则在创建这个类的每一个对象的时候会自动调用这个函数。->构造函数
- 没有返回类型
- 无参构造函数、有参构造函数
- 函数重载
一个类可以有多个构造函数,只要它们的参数表不同。
创建对象的时候给出不同的参数值,就会自动调用不同的构造函数。
通过this()还可以调用其他构造函数。
一个类里的同名但参数表不同的函数构成了重载关系。
2. 对象交互
2.1 对象的识别
2.2 对象的交互
2.3 访问属性
- private-封闭的
只有这个类内部可以访问
这个限制是对类的而不是对对象的 - public——文件名和类名相同
- 缺省——同一个包可以相互访问
- protected——继承
2.4 包packag
import 包名.类名
- 用其他包里的类
- 用包来管理文件,目录
- java 包的管理机制
2.5 static
- static修饰的变量不属于任何对象,属于这个类。
- 类变量:类名.变量名
- 类函数
3. 对象容器
3.1 顺序容器 ArrayList
3.1.1 记事本的例子
-
能存储记录
-
不限制能存储的记录的数量
-
能知道已经存储的记录的数量
-
能查看存进去的每一条记录
-
能删除一条记录
-
能列出所有的记录
-
接口设计
人机交互和业务逻辑在一起。 -
容器类
ArrayList<String> notes = new ArrayList<String>
泛型类
容器类有两个类型:容器的类型和元素的类型 -
顺序容器,即放进容器中的对象是按照指定的顺序(放的顺序)排列起来的,而且允许具有相同值的多个对象存在。
-
当数组的元素的类型是类的时候,数组的每一个元素其实只是对象的管理者而不是对象本身。因此,仅仅创建数组并没有创建其中的每一个对象!
3.2 集合容器 Set
- 所有的元素都具有唯一的值,元素在其中没有顺序。
3.3 散列表 Hash
- 键+值