9.抽象方法等

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());
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容