您的位置:首页 > 职场人生

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

2015-12-15 18:10 246 查看
------<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(); 

        }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: