zoukankan      html  css  js  c++  java
  • Java中的抽象类和接口

    1.声明方法的存在而不去实现它的类叫做抽象类.它主要用于创建一个体现某些基本行为的类.

    2.接口是抽象类的变异.在接口中所有方法都是抽象的,没有程序体.接口只可以定义static final变量.

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

    对于抽象类与接口的区别,单纯从概念上很难有明确的答案,我们可以通过"报警门"的例子,来注意二者的区别.

    不同的门都具有某些基本行为,比如open(),close().使用抽象类和接口都可以定义者两个行为.但是如果要增加报警alarm()的特性,应该改怎么办呢?

    是使用抽象类还是使用接口?

    若open,close,alarm都在抽象类中实现,则有些不妥,因为并不是所有的门都具有报警功能.

    若opne,close,alarm都在接口中实现,则具有报警功能的门也必须实现open和close.相当于在每个门的实现类中都要实现open和close

    如果采用以下方案是不是会更好呢?

    把基本行为open和close在抽象类中实现,把alarm行为(或者成为个性化行为)在接口中实现.则一个完美的方案就出来了.

    abstract class Door { 
      abstract void open(); 
      abstract void close(); 
    } 
    interface Alarm{
      void alarm();
    }
    class AlarmDoor extends Door implents Alarm{
      void open(){....};
      void close(){....};
      void alarm(){....};
    }

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

    抽象类,"is a"关系,抽象出共同的基本行为;接口,"like a"关系,个性化行为,可实现多重继承。

    抽象类就是类的基本行为,共同的;接口是个性化的,若想让类更具个性化,则继承相应个性话的接口即可。

    原文出处:http://android.blog.51cto.com/268543/385282/

  • 相关阅读:
    OpenStack源码系列---neutron-server
    理解全虚拟、半虚拟以及硬件辅助的虚拟化
    QEMU+GDB调试方法
    SQL Server故障转移集群
    OpenStack源码系列---nova-conductor
    mysql 安装和基本使用
    数据库原理
    linux 计划任务
    linux 进程管理和内存分配

  • 原文地址:https://www.cnblogs.com/shihujiang/p/2811867.html
Copyright © 2011-2022 走看看