java抽象类

任务1、封装一个矩形类:属性为长和宽,方法为计算面积

  class Rectangle{

    int length;

    int width;

    Rectangle(int len,int wid){

        length=len;

        width=wid;

    }

    double calArea(){

         return length*width;

    }

  }

任务2、封装一个圆类:属性为半径,方法为计算面积

class Cicle{

double  radius;

    Cicle(double r){radius=r;}

    double area(){

                     returnMath.PI*radius*radius;

   }

}

任务3:抽取上述两个类的共同行为:计算面积à封装成形状Shape类

class Shape{

doublearea(){ return 0; }

}

以Shape作为父类,派生长方形类和圆类,并在子类中对计算面积方法进行覆盖。

classRectangle  extends Shape{  

    double calArea(){

         return length*width;

    }

  }

class Cicle  extends Shape{  

    double area(){

                     returnMath.PI*radius*radius;

   }

}

问题:Shape类中,因没有具体指定几何形状的类型,计算面积方法功能的具体实现过程未知!!!

即方法的方法体的实现是不知道的,所以在写代码时,不写方法的具体实现过程,只描述方法声明部分内容,这种没有方法体的方法称为抽象方法。

包含抽象方法的类称为抽象类。其关键词为abstract。

则修改Shape类的定义如下: 

abstract classShape{

    abstract double area();

}

结论:

(1)抽象方法:没有方法体,只有方法的原型声明,是没实现的方法,记为抽象方法。

(2)抽象类:在定义父类时,只知道父类具有一个方法(功能),但父类不作为方法执行体,方法的执行体是父类派生的子类对象。这是就可以在父类中只定义该功能方法,而不具体定义其实现过程。

该父类包含了一个抽象方法,包含抽象方法的类称为抽象类。

关键词:abstract

(3)抽象类作用:派生子类,并规定子类必须去实现的一些功能。

(4)抽象类规则:

当子类仅部分实现了抽象父类的抽象方法,或者说子类还包含有未实现的抽象方法,则子类也是抽象类

抽象类不可以实例化对象,即new抽象类名(); 


抽象类的应用

任务4:封装一个类,完成功能:计算一段代码的运行时间

用抽象父类完成获取运行代码时间功能,具体的运行代码由派生类提供,父类定义如下:

abstract classGetTime{  

       final      long  getTime(){

                     long start=System.currentTimeMillis();

                     //.....

                     runCode();

                     longend=System.currentTimeMillis();

                     return end-start;

              }

       abstract  voidrunCode();  //运行的代码由子类完成

}

 子类仅提供运行的具体代码功能,其定义:

class RunCodeextends GetTime{

void runCode(){

               for(int i=0;i<1000;i++){                    

                              System.out.println();

                       }

   }

}

测试类:

public classTest  {         

         public static void main(String[] args) {                

                RunCode rc=new RunCode();

                rc.getTime();

         }     

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值