再读Think in Java-高级篇
二,复用类
1,java代码的复用有两种方法,第一种非常简单:在新的类里直接创建旧类的对象,这被称为合成(compostion),因为新的类是由旧的类合成来的,所以你只是复用了代码的功能。第二种方法比较神奇,它会创建一个新的,与原来那个类同属于一类型的类,这种做法被称为继承(inheritance) 合成的语法:合成很简单,你只要把对象的reference直接放到新的类里面就行了,先前我们讲过reference会被初使化为null,如果这个时候你去调用这个对象的方法,就会得到异常。如果你想为reference初始化,你可以在以下时间进行:
(1),在定义对象的时候,在调用构造函数前,他们已经被初使化完毕了。
(2),在这个类的构造函数里。
(3),在即将使用那个对象前,如果碰到创建这个对象代价太高,或者不是每次都需要创建对象的时候,这种做法就能降低程序的开销了。下面这段代码演示了在三种情况下实例化对象,
对于Cups类的toString 方法,所有非primi tive类型的类都有一个toString方法,当编译器需要一个String却得到一个对象的时候,就会调用对象的这方法。s这样派生类就有了基类的全部成员和方法。现在你要创建一个派生类的对象已经不是一个类的事情了,他会涉及到两个类(基类和派生类).实际上当你创建一个派生类的对象的时候,这里面还有一个基类的子对象.这个子对象和基类创建的对象没有什么两样。class Cups...{
private String s = new String (“hello”);// 在定义对象的时候
private String t;
private String s1;
Cups()...{
t = new String(“constructed”);//构造函数里定义
}
public String toString()...{
if (s1 == null)...{
s1 = new String (“welcome”);//用到的时候
}
return s1;
}
}
java会用派生类的构造函数自动调用基类的构造函数,其构造的顺序为从基类向外发展,在基类的构造函数没有参数的情况下,即便是你不写构造函数,派生类会去调用默认的构造函数,但是如果基类构造函数带有参数怎么办?有办法:通过在派生类构造函数里使用super(参数)调用基类构造函数即可.
0
相关文章
