在定义功能时,功能的部分是确定的,但是又一部分是不确定的,而确定的部分在使用不确定的部分,那么这时就将不确定的部分暴露出去,由该类的子类去完成。
需求:获取一段程序(不确定的)运行的时间。
abstract class GetTime{
public final void getTime(){//final,不让子类复写
long start=System.CurrentTimeMillis();
runCode();
System.out.println("毫秒"+(end-start));
}
public abstract void runCode();
}
子类:
class SubTime extends GetTime{
public void runCode(){
for(int i=0;i<4000;i++){
System.out.println(i);
}
}
}
模板类不一定是抽象的,要记得思想。