测试时:main函数实例化父类的对象也行,实例化子类的对象也行,(我这里多态了子类的对象)反正都能执行的是父类的方法,则模版完成
public class TemplateTest {
public static void main(String[] args) {
Template t = new SubTemplate();
t.spendTime();
}
}
abstract class Template {
public void spendTime() {
// 计算某段代码执行所花费的时间
long start = System.currentTimeMillis();
code();// 不确定的部分、易变的部分
long end = System.currentTimeMillis();
System.out.println("花费的时间为:" + (end - start));
}
public abstract void code();// 抽象的方法,子类重写
}
class SubTemplate extends Template {
// 子类重写code方法
public void code() {
// 例子:计算1000以内的质数
for (int i = 2; i <= 1000; i++) {
boolean isFlag = true;
for (int j = 2; j < Math.sqrt(i); j++) {
if (i % j == 0) {
isFlag = false;
break;
}
}
if (isFlag) {
System.out.println(i);
}
}
}
}