本帖最后由 张权 于 2013-3-18 14:45 编辑
代码时老毕的源代码, 不过有一点没听懂,求解释, 最好附上代码说明下!
问题: GetTime类定义了一个抽象方法 public abstract void runCoded(); 老毕说这个方法不一定是抽象的, 他的原话解释是这样的, 假设这个模板有默认的实现, 当觉得这个功能不爽时, 就可以修改, 完全没有明白这句话是什么意思....
abstract class GetTime {
//该功能是确定的,不让被复写,所以用final修饰
public final void getTime() {
long startTime = System.currentTimeMillis();
//该功能是不确定的,确定功能里面使用了不确定功能,所以考虑模板设计模式,把该功能暴露出去, 让子类完成
runCode();
long endTime = System.currentTimeMillis();
System.out.println("runtime = " + (endTime - startTime) + "毫秒");
}
//为了让子类完成这部分不确定的功能, 所以定义成抽象方法.子类去重写.
public abstract void runCode();
}
class RunCode extends GetTime {
public void runCode() {
for (int i = 0; i < 100; i++) {
System.out.println(i);
}
}
}
class TemplateDemo {
public static void main(String[] args) {
GetTime gt = new RunCode();
gt.getTime();
}
} |