您的位置:首页 > 编程语言 > Java开发

java中的抽象类和抽象方法

2017-08-30 15:54 162 查看
抽象类

        在关键字class前有修饰符abstract 加以修饰,抽象类没有具体的对象的概念类。例如由“鸟”这个类,可以派生出“麻雀”、“鸽子”、“鹦鹉”等子类。只要是一直实实在在的鸟,就一定属于一种具体的鸟。所以说“鸟”这个类只是代表了所有鸟类的共同属性,作为一个抽象的概念,其没有具体的对象。(即抽象类不能创建对象,必须产生其子类,由子类创建对象)

        运用这种方法的好处是,如以上面“鸟”类的例子为例。利用抽象类的概念,实际上是一种经过优化了的概念组织方式:把所有鸟类的共同特点抽象出来,概括形成鸟类的概念;其后在描述一种具体的鸟时,就只需描述它与其它鸟的不同之处,而不必再重复它与其它鸟类的相同特点。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

抽象方法

        有修饰符abstract修饰的方法,方法只有声明部分,而没有方法体的定义。如在抽象类Telephone中定义一个计费方式的方法:

         abstract void charge_Mode();

        那么为什么在这里不定义方法的实现呢?以上述Telephone这个抽象类为例,此”电话类“是从所有电话中抽象出来的共同特性的集合,每种电话都有不同的“计费方法”(charge_Mode),即方法体中的具体操作不一样。至于方法的具体实现,则留到Telephone类的不同子类的定义中完成。即个子类继承了父类的抽象方法后,再分别用不同的方法来重新定义charge_Mode这个方法,形成若干有相同名字、参数列表、目的一致但是具体实现方法不同的方法。

        这样Telephone这个类的所有子类都对外呈现一个相同名字的方法和统一的接口,从而隐藏了具体的细节。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

抽象类和抽象方法的关系

        所有抽象方法都必须存在于抽象类中(一个非抽象类中出现抽象方法是非法的)。

        抽象类不一定只拥有抽象方法(抽象类可以包含非抽象的方法)。

        注:若一个抽象类的子类不是抽象类,则他必须实现父类中所有的抽象,包括父类继承下来的抽象方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: