需要多次使用的对象 ,存放在一个标识符变量上
更改器方法: 对象中的属性原始值会改变的方法
访问器方法: 只访问对象而不修改对象的方法
注:在C++中,带有const后缀的方法是访问器方法;默认为更改器方法。
类之间的关系
- 依赖 (use-a): 应该尽可能地将互相依赖的类减至最少 ,降低耦合
- 聚合 (has-a)
- 继承 (is-a)
多个源文件的使用
javac Employee*.java
通过使用通配符进行模糊匹配 ,运行该指令则在当前目录下所有前缀为 Employee 的.java 文件都会进行编译
构造器
- 构造器与类同名
- 构造器没有返回值
- 构造器总是伴随着 new操作一起调用
- 每个类可以有一个以上的构造器
- 构造器可以有 0 - N 个参数
封装具体实现
- 一个私有的数据域
- 一个公有的域访问器方法
- 一个公有的域更改器方法
如果需要返回一个可变对象的引用,应该首先对它进行克隆(如果需要返回一个可变数据域的拷贝,请记得使用clone)
final : 修饰的方法需要赋 初始值 ,代表常量 。不可修改。
static : 属于类且不属于对象的变量和函数。
两种情况下使用静态方法
- 一个方法不需要访问对象状态,其所需参数都是通过显示参数提供(eg: Math.pow)
- 一个方法只需要访问类的静态域 (Employee.getNextId)
方法参数
- 方法的参数值是一个拷贝(Copy),方法不能修改传递给它的任何参数变量的的内容,方法结束后这个拷贝(Copy)就会被丢弃。
- 引用类型也是一样,方法得到的是对象引用的拷贝(Copy),对象的引用 以及 它的拷贝 实际上是同时引用一个对象 ,此时如果操作更新这个引用的对象属性,原对象也会进行更改。
- 没有引用调用,引用调用实际上也是按值传递的 ,此时,引用本身即是 值。
方法参数的使用情况
- 一个方法不能修改一个基本数据类型的参数。
- 一个方法可以改变一个对象参数的状态。
- 一个方法不能让对象参数引用一个新的对象。
重载
- 在同一个类中的多个方法,具有相同的名字、不同的参数,便产生了重载,这与返回值、访问修饰符无关。
默认域初始化
- 域变量手动进行初始化赋值,可有效防止空指针异常,是一种良好的编程习惯。
//方式一
class Employee{
private String name = "";//域变量中的引用类型默认初始值是null,手动初始化一个非null之后,在调用时不会报空指针异常,更具有鲁棒性
}
//方式二
class EmployeeB{
private String name;
private int salary;
public EmployeeB(){ //构造时再赋值
name = "";
salary = 0;
}
}
构造器
- 没有编写自定的构造方法时,Java会自动添加默认构造方法,默认构造方法没有参数。
- 如果已经自定义了一个或多个构造方法,那么Java将不会自动添加默认的构造方法。
初始化块
- 用于初始化域变量和方法
静态代码块
- 类第一次加载的时候,将会进行静态域的初始化,无论new 多少个对象,静态代码块仅加载一次。
finalize方法
- finalize 方法将在垃圾回收器清除对象之前调用,不要依赖于使用finalize 方法回收任何短缺的资源,因为该方法的调用时机不确定。
包
- 包的主要作用是确保类名的唯一性。
- 类的包声明与目录不匹配,虚拟机就找不到类。
包的作用域
- 同类、同包 下可访问
类路径
- 类存在文件系统的子目录中,类的路径必须与包名匹配。
JVM搜索类路径的步骤
- 首先要查看存储在 jre/lib 和 jre/lib/ext 目录下的归档文件中所存放的系统类文件。
- 然后再查看当前类的路径。
- 然后查找以下文件。
举例:
* /home/user/classdir/com/horstmann/corejava/Employee.class
* com/horstmann/corejava/Employee.class 从当前目录开始
* com/horstmann/corejava/Employee.class inside /home/user/archives/archive.jar
编译器定位
- 编译器将首先查找包含这个类的包,并查询所有的import 指令。
- 会对这个类路径的所有位置中所列出的每一个类进行逐一查看。
编译器的其他任务
- 查看源文件是否比类文件新,如果是这样的话,那么源文件就会被自动地重新编译。
设置类路径
-
① 最好采用 -classpath 选项指定类路径
java -classpath /home/user/classdir:.:/home/user/archives/archive.jar MyProgjava -classpath 项目基路径;.;lib依赖目录/文件名 类名 -
② 设置系统 CLASSPATH环境变量
生成JavaDoc文档
- ①切换到包含想要生成文档的源文件目录 ,例如
com.oecoo.corejava,就必须切换到包含子目录com的目录 - ②如果是一个包,应该运行命令:
javadoc -d docDirectory nameOfPackage或对于多个包生成文档,运行
javadoc -d docDirectory nameOfPackage1 nameOfPackage2
如果文件在默认包下,运行
javadoc -d docDirectory *.java