1.对象的三个特性:
行为:对象能做什么(具有那些方法),能对对象施加社那方法(可用该对象做参数的方法)。
状态:对对象施加方法时,对象如何反应。
身份:如何与具有相同行为,状态的其他对象区别。
2.类之间的关系
依赖("use-a"):一个类中的方法操作了另一个类中的对象,类B的对象作为类A中方法的参数,则类A依赖类B
聚合("has-a"):类A的对象包含类B的对象,类B的对象作为类A的属性
继承("is-a") :父类与子类之间的关系
3.方法参数
传值调用:方法得到的是调用者提供的值。
传引用调用:方法得到的是调用者提供的地址。
java总是使用传值调用。
方法参数的类型
基本类型:
对象引用:
java中对于基本型别的参数是值传递的,如果方法参数是对象的话,传递的将是该对象的一个拷贝引用,因此在
方法中可以修改对象参数的状态,但是不能使对象参数指向新的对象。
示例:
下面的方法用来交换两个员工对象:
public static void swap(Employee x,Employee y) //无法工作
{
Employee temp = x;
x=y;
y=temp;
}
Employee a = new Employee("a");
Employee b = new Employee("b");
Employee.swap(a,b);
这么做是不能实现将两个员工对象交换的目的的,因为java是值传递的,调用这个方法时实际上传递给
x和y的是对象a和b的引用的拷贝,方法只是交换了两个拷贝,而没有改变存储在a和b中的对象引用。当
方法结束后x和y就丢弃了,原来的变量a和b仍然指向方法调用前各自指向的对象。
4finalize方法
java并不支持析构器,但是可以把finalize方法添加的任何类中来执行一些回收操作。finalize方法会在垃圾收集
器清除对象之前被调用。但在实际操作中不要依赖finalize方法回收任何短期资源,因为很难知道这个方法具体什么
时候才被调用。需要在资源使用完毕后立即关闭此资源的话,就需要手工管理。
5工厂方法
产生同一类的对象的方法成为工厂方法。使用工厂方法的原因:
1)无法给构造器命名
2)工厂方法还可以返回从该类继承的子类的对象。