1.抽象类
- 比如声明一个三角形 正方形 长方形的类,他们都有求 面积和周长这些特征,这些公共公共特征应该提取到一个公共的类中,但是在公共类中无法给出具体实现,应该交给自类各自具体实现,那么父类在声明这些方法时,只有方法名,没有方法体。我们把没有方法体的方法,称为抽象方法。规定:有抽象方法的类,必须是抽象类。
- 不能被实例化
- 子类必须重写父类方法
- 被abstract所修饰的类就是抽象类
[权限修饰符] abstract class 类名{ }
[权限修饰符] abstract class 类 extends 父类 { }
public abstract class animal {
public abstract void run()
}
public class cat extends animal {
public void run(){
System.print.out("小猫在奔跑");
}
}
public class CatTest{
public static void main(String[] args){
Cat c = new Cat();
// 调用run方法。
c.run()
}
}
2.模板设计模式
当解决某个问题,或者完成某个功能时,主体的算法结构(步骤)是确定的,只是其中的一个或者几个小的步骤不确定,要有使用者(子类)来确定时,就可以使用模板设计模式
//模板类
public abstract class CalTime{
public long getTime(){
//1、获取开始时间
long start = System.currentTimeMills();
//2、运行xx代码:这个是不确定的
doWork();
//3、获取结束时间
long end = System.currentTimeMills();
//4、计算时间差
return end - start;
}
protected abstract void doWork();
}
//模板类
public class MyCalTime extends CalTime{
protected void doWork(){
//....需要计算运行时间的代码
}
}
// 测试类
public class Test{
public static void main(String[] args){
MyCalTime my = new MyCalTime();
System.out.println("运行时间:" + my.getTime());
}
}