第4章 对象与类
类直接的关系:
依赖 (dependence)(use-a )
比如Order类使用Account类是因为Order对象需要访问Account对象查看信用状态。
聚合 (aggregation)(has-a )
比如一个Order对象包含一些Item对象。
继承(inheritance)(is-a)
4.2使用现有类
4.2.1 对象与对象变量
要想使用对象,就必须首先构造对象,并指定其初始状态。然后,对对象施加方法。
构造一个Date对象,
new Date() 这个表达式构造了一个新对象
String s = new Date().toString(); // 将一个方法应用于刚刚创建的对象上
对象与对象变量:
在对象与对象变量之间存在着一个重要的区别。
例如,语句
Date deadline;//deadline doesn‘t refer to any object
定义了一个对象变量deadline,它可以引用Date类型的对象,但是,一定要认识到:变量deadline不是一个对象,实际上也没有引用对象。
此时,不能将任何Date方法应用到这个变量上
语句
s = deadline.toString();
//not yet
将产生编译错误
必须首先初始化变量deadline. 这里有两个选择。
当然,可以用新构造的对象初始话这个变量:deadline= new Date();
也可以让这个变量引用一个已经存在的对象:
deadline = birthday;
现在,这两个变量引用同一个对象。
一定要认识到:一个对象变量并没有实际包含一个对象,而仅仅引用一个对象。
在Java中,任何对象变量的值都是对存储在另外一个地方的一个对象的引用。new操作符的返回值也好似一个引用:
Date deadline = new Date();
有两个部分。表达式new Date()构造了一个Date类型的对象,并且它的值是对新创建对象的引用。这个引用存储在变量deadline中。
4.3.9 Final实例域
final修饰符大都应用于基本数据(primitive)类型域,或不可变(immutable)类的域(如果类中的每个方法都不会改变其对象,这种类就是不可变的类。)