使用预定义类
- 标准Java类库分为两个类:一个用来表示时间点的Date类;另一个用来表示大家熟悉的日历表示法的LocalDate类。将时间与日历分开是一种很好的面向对象设计。
封装
注:注意不要返回引用可变对象的访问器方法。在Employee类中就违反了这个设计原则,其中的getHireDay方法返回了一个Date类对象:
class Employee{
private Date hireDay;
...
public Date getHireDay(){
return hireDay;
}
...
}
复制代码
LocalDate类没有更改器方法,与之不同,Date类有一个更改器方法setTime,可以在这里设置毫秒数。 如果需要返回一个可变对象的引用,应该首先对它进行克隆(clone)。对象clone是指存放在另一个位置上的对象副本。
下面两种情况下使用静态方法:
- 一个方法不需要访问对象状态,其所需参数都是通过显式参数提供(例如:Math.pow)
- 一个方法只需要访问类的静态域(例如:Employee.getNextId)
方法参数
Java程序设计语言对对象采用的不是引用调用,实际上,对象引用是按值传递的
- 一个方法不能修改一个基本数据类型的参数(即数值型或布尔型)
- 一个方法可以改变一个对象参数的状态
- 一个方法不能让对象参数引用一个新的对象
包
从编译器的角度来看,嵌套的包之间没有任何关系。例如,java.util包与java.util.jar包没有任何关系。每一个都拥有独立的类集合。
继承
Java中使用关键字extends代替C++中的冒号(:)。在Java中,所有的继承都是公有继承,而没有C++中的私有继承和保护继承。