一直很疑惑,接口的实现都是在其他类,为什么还要定义借口?还有就是那个序列化接口,没有任何方法,为什么还要定义?

解决方案 »

  1.   

    接口的定义,并没有明确的说明在什么地方应该用,不过我觉得弄明白两个问题就比较好决定什么地方用接口了
    1. "like a"
    2. "is a"举个经典的例子,“报警门”又有门的特性,又有报警器的特性,那么写的时候,应该是继承class 门还是class 报警器?首先判断一下,“报警门”是门还是报警器,就是 is a的问题,归根到底,防盗门,木门,各式各样的门,他们都应该是门,所以报警门就应该是具有报警功能的门,因此,is a 门至于报警,是它的一个功能,所以,就可以使用接口来实现了,就是like a 报警器的问题了不知道说明白没。
      

  2.   

    接口为多态和多重继承而生,是实现解耦合和OO设计的基础。
    OO的一个基本原则:面对接口编程。这里的接口包括了抽象类。
    与接口打交道降低了类与类之间的耦合性,提高系统的可扩展性和可维护性。在哪里使用接口呢?当你为某个事物抽象出来一个共同的模型,你可以为它定义一个接口(包括抽象类)。
    所以最核心的是抽象。当你把像的部分抽取出来之后,它就可以是一个接口。
      

  3.   

    序列化接口只是一种标识性接口,标识实现了改接口的类和对象可被序列化。
    序列化有什么用呢?
    ---对象的持久化,网络传输比如你要将对象存储在文件里,该对象必须可被序列化。更具体的原因,涉及到进制转换等问题。
    需要被网络传输的对象也必须是可被序列化的。所以当你的系统涉及到远程调用或是rmi/EJB应用,你的bean应该实现序列化接口。
      

  4.   

    接口可以理解为一种契约,双方都遵守这个契约。
    之余实现契约的类,可能有额外的工作,但是对于契约双方来讲,他们并不关心这个。
    再有,JAVA语言,没有类似函数指针的东西,接口是实现回调的最好办法。
      

  5.   

    发表一下拙见
    我的老师是这样讲的:
    比如,你要写一个黄金类,黄金可以说是货币,可以说是金属(在逻辑上满足:子类 is a 父类,才能用继承)。那么如果要继承的话继承那一个呢?一个子类只能有一个父类(类和类是单继承),那如果要实现多继承就引入了接口来实现,这里货币是接口,金属也是接口,public class Gold implements HuoBi,JinShu 就可以写黄金类了,在类体里要把接口的方法重写,因为重写的要求是方法名必须相同,所以以后不管谁重写这个方法一定要用接口定义的方法名,这样就是我们说的规范。
    不知道说的是否明白!
      

  6.   

    接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。妆接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口
      

  7.   

    我的blog:抽象类与抽象接口之抽象类
    抽象类与抽象接口之抽象接口
    抽象类与抽象接口之两者区别
      

  8.   

    一直很疑惑,接口的实现都是在其他类,为什么还要定义借口?还有就是那个序列化接口,没有任何方法,为什么还要定义?1.由于Java是不能多继承的,通过接口的继承然后实现它,则可以实现多继承
    2.接口编程的好处是 里氏代换 原则里面的实现类可以取代接口类,更加的灵活,就像计算机的主板上面提供了很多的接口规范,生产显卡的厂商只需要实现这些接口并加以扩充功能,主板厂商不需要知道并涉及显卡厂商的开发。低耦合
    3.序列化接口 Serlizable 和Cloneable 都是标记型接口,它声明了当前对象所具有的一种能力,如果想要拥有这种能力的话旧必须显式的实现这个接口,又称之为 标记