黑马程序员——Java---抽象,模板方法

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

 /*抽象 用修饰符abstract 修饰的类,抽象方法必须被存在抽象类中
,抽象被不可以被new创建,因为调用抽象方法没有意义
抽象类中的方法要被使用,必须由子类覆盖其所有抽象方法后,建立子类对象调用
如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类,并且也不可以被new创建。

*/

abstract class  myclass      //abstract修饰的抽象类
{
       abstract void show();//abstract修饰的抽象方法,抽象方法不允许有函数主体
        //当对两个或多个以上的功能进行抽取,并且函数主体内容不同的时候,就可以使用抽象方法来向上提取共性部分
}

*******************************************************************************************************************************

/*模板方法

类定义功能,有一部分是确定,一部分是不确定的时候,可以将其不确定的以函数的方式暴露出来,让子类去实现。

 例子 ClassB 继承并实现ClassA抽象类中的方法来计算程序运行时间
*/
   

abstract class ClassA  //变量的默认修饰符是static
{
 void getTime(){                                            //父类中定义计算时间的函数

  long start = System.currentTimeMillis();

  runcode();                                                   //因为不确定被调用函数的内容,所以用函数封装的方式将要被调用的函数暴露出来留给子类去复写。

  long end   = System.currentTimeMillis();

    System.out.println("runtime:"+(end-start)); //打印出子类程序运行的时间
 }
 public abstract void runcode();

      //抽象类中的所有抽象方法必须要被子类实现,如果没有全部实现,则子类也是一个抽象类,也不能被new关键字建立新的对象.           
 
}

class ClassB extends ClassA
{
 public void runcode(){
  System.out.println("hello");
 }
}

class MyProgma

{

         public static void main(String[] args)

        {

                 ClassB cb = new ClassB();

                             cb.getTime(); 

        }

}



  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值