Java代码复用主要有两种手段,组合技术与继承。
一:组合技术
组合技术就是在新类中直接使用已有的类的引用,看个例子:
class WaterSource{
private String s;
WaterSource(){
System.out.println("WaterSource()");
s= "Constructed";
}
public String toString() {
return s;
}
}
public class SprinklerSystem {
private String value1,value2,value3,value4;
private WaterSource source = new WaterSource();
private int i;
private float f;
public String toString() {
return
"value1= "+value1+" "+"value2="+
value2+" "+"value3="+value3+" "+"value4="
+value4+"\n"+"f="+f+" "+"i="+i+" "+"source="+source;
}
public static void main(String [] args) {
SprinklerSystem sprinklers = new SprinklerSystem();
System.out.println(sprinklers);
}
}
输出结果是
WaterSource()
value1= null value2=null value3=null value4=null
f=0.0 i=0 source=Constructed
在这里,类SprinklerSystem直接使用几种基本数据类型,以及自己写过的WaterSource类。
值得注意的是toString方法,每一个非基本类型的对象都会有一个toString,当我们写出"source="+source时,编译器知道我们需要source是一个String类型,就会自动调用source中的toString方法.
二:继承语法
1初始化基类
在类的初始化过程中,初始化会从最上层的基类开始,并逐步扩散到最下层需要初始化的类。
2正确清理
因为垃圾回收器的调用是不确定的,所以我们可以使用dispose()方法显式的清理。
清理的顺序是先执行类的特定的清理动作,再执行基类的清理动作。
3名称屏蔽
如果Java的基类拥有某个已被多次重载的方法的名称,在导出类中重载该方法不会导致基类中的方法被覆盖。
4protected
protected修饰的类对于用户来说是private的,但是提供继承自此类的导出类或者同一个包里任意类访问权限。
5向上转型
一个导出类的引用可以任意转换成它的基类的引用。
向上转型涉及对继承的理解,在继承中,导出类和基类是is的关系,导出类是基类的一种特例并且含有基类的所有方法。