对象和类
l 类(class):是构造对象的模块或蓝图;
由类构造对象的过程成为创建类的实例
l 封装(encapsulation):有时称为数据隐藏
形式上看封装不过是将数据和行为组合在一个包中并对对象的使用者隐藏了数据的实现方式;
对象中的数据成为实例域(instance file);
操纵数据的过程成为方法(method);
对于每个特定的类实例都有一组特定实例域值。这些值的集合就是这个对象的当前状态(只要向对象发送一个消息,它的状态就有可能发生改变);
l 对象
对象的行为(behavior):可以对对象施加那些操作或可以对对象施加哪些方法;
对象的状态(state):当施加哪些对象时,对象如何响应;
对象标识(identity):如何辨别具有相同的行为而具有家族相似性,对对象的行为时可调用方法定义的!
每个对象都保存着当前特征的信息(状态),状态自身是不会发生改变的,必须通过调用方法来实现(否则则是代码内部出现了问题);
l 对象之间的关系:
依赖(uses-a):一个类的方法操纵另一个类的对象,一个类依赖于另一个类;
聚合(has-a):A类包含B类的关系;
继承(is-a):B继承A,B包含A的方法和属性,也可以用其他的属性和方法;
l 构造器:
在java中使用构造器(constructor)构造新实例,构造器是一种特殊的方法用来构造并初始化对象;
1. 构造器与类同名;
2. 每个类可以有一个或一个以上的构造器;
3. 每个构造器可以有0个或多个参数;
4. 构造器没有返回值;
5. 构造器总是随new操作一起被调用;
6. 如果一个类中没有构造器,当类初始化时会自动添加一个默认的构造器;
l 静态域和静态方法:
静态域:
Class A{
private int id;
private static String name;
}
在上面这个类中,如果A被实例化100次,那么会产生100个实例域id,但只会有一个实例域name;
静态常量:
Class A{
…..
public static final double P = 3.141592653;
……
}
可以直接引用P
静态方法:在方法名前加上static:是一种不能向对象实施操作的方法;
l 方法参数:
1. 值调用(call by value):表示方法接受的事调用者提供的值;
2. 引用调用(call by reference):表示方法接受的事调用者提供的变量地址;
l 重载:有多个方法,且有多个相同的名字,不同的参数,变产生了重载,
编译器必须挑选出具体的执行哪个方法,通过参数类型与特定方法的调用所使用的值类型进行选出响应的方法;
l 类的设计技巧:
1. 一定将数据设计为私有,它们的表示形式的变化不会对类使用者产生影响,即使出现bug也会很容易检测;
2. 一定要对数据进行初始化
3. 不要再类中使用过多的基本数据类型;
4. 书面风格:先域,后方法;项目中的风格要保持一致;
5. 将职责过多的类进行分解;
6. 类名和方法名要能很清楚的体现他们的职责;