抽象类理解

来源:互联网 发布:单片机交通灯设计报告 编辑:程序博客网 时间:2024/05/16 18:42

工作了三年,一直在做安卓的东西。然而却没有真正的了解过Java,真的自愧不如。以前一直都是使用C语言,用习惯了就不喜欢轻易改变。而一旦开始了改变,就再也停不下来了。

今天了解了一下java的抽象类,在此谈谈自己的理解。

抽象类的特点:

1. 使用了关键字 abstract声明的类 就是 抽象类

2. 抽象类可以不包含抽象方法,但包含了抽象方法的类就一定要是抽象类,要在class前添加abstract

3. 抽象类不能被实例化,也就是说不能new 抽象类

4. 抽象类可以被继承,继承抽象类的派生类假如还是包含了未被实现的抽象方法,那派生类也是不能被实例化的,而且必须有加上abstract关键字。假如全部抽象方法都提供了方法定义,那派生类是可以被实例化的。

5. 如第二点所说,抽象类可以不包含抽象方法。假如一个类没必要拥有任何抽象方法,而且我们想禁止该类的所有实例,就可以把这个类定义成抽象类.具体的例子可以参考以下博文 http://blog.csdn.net/gxnu/article/details/1766044

   

为什么要有抽象类?

在我看来,当两个以上的类具有相同的特性时,就可以将其概括起来,定义在这个名为抽象类的特殊类之中。

比如说,我的工作是编写各个AT command,来检查手机的每个外设功能是否正常。针对不同外设的命令其实都需要有检查参数,处理过程,返回结果的步骤。那么我就可以定义一个AtCommand的抽象类

<pre class="java" name="code">public abstract class AtCommand {    protected abstract  boolean checkArgu(String argu[], String argv[]);    protected abstract  synchronized  String handleCommand(String argu[]);    protected abstract  String responseOK(String arg);}

当我需要写一个检查电池情况的命令时,则可以继承AtComand这个抽象类了

public class AtBattery extends AtCommand {    protected boolean checkArgu(String argu[], String argv[]) {    Logi("检查参数");    }    protected synchronized  String handleCommand(String argu[]) {    Logi("针对各个参数的处理");    }    protected String responseOK(String arg) {    Logi("返回OK");    }}


 

0 0