大型项目开发之前要给每一个小组成员分配任务
所以要有一种“先定义”一个空函数
“后实现”这个函数的机制
定义由项目组长做
实现由小组成员做
这就是抽象机制的由来
而接口则是在java中实现抽象的最佳途径
还有另一种方法是构造abstract类,没有interface好,因为接口是“纯虚的”
给点分,好吗

解决方案 »

  1.   


    对,最根本的区别有两点:接口是纯虚的,接口可以多继承。一般在java开发中常用的是interface而不是abstract类,因为java不提供多重继承,所以只能用接口来实现了。其实接口与C++中的纯虚类很类似了。
      

  2.   

    zzhphp(): 放在一个接口中实现了启动的特性(开关),而提取这样一个特性又有什么优势呢?
              况且这特性还要再一次的在每个对象中具体的实现!
      

  3.   

    to Virginer(里个那个里个棱) :
    我认为优势有以下点:
    1. 它可以起一个规范的作用,对于不同对象之间某些特性,它的操作,可以起到规范化,这样不论谁来实现,它的接口肯定是规范化。(如:sax,dom,这些不是太深入的学过,但它们定义的接口,确是规范的。)
    2. 正如 sharetop(天生不笨) 所说的,java中不支持多层继承,那只有使用这个接口了。
      

  4.   

    interface  pig{
       void eat(){}
    }
    public class  bigpig implements pig{
       void eat(){
           System.out.println("eat a lot");
       } 

    public class  littlepig implements pig{
       void eat(){
           System.out.println("eat little");   
       } 
    }
    pig  myPig ;
    myPig = new littlepig();  // line x1
    myPig.eat();
    myPig = new bigpig();     // line x2
    myPig.eat();
    -----------------------------------------------
    如果我把line x1和line x2交换,一点问题都没有。
    如果我们在使用myPig的时候不需要知道myPig具体如何做,岂不是符合oop的思想。
      

  5.   

    对,这就是多态的概念,看上去,大家都是pig,但其实eat的细节是不同的,但使用者只要知道,它使用的东西是pig的instance就行了,而这就是封装。
    接口就是规范,这点也很对,而且这一点也是oo的重大实际意义,为什么要有oo,就是为了缩短开发周期,而缩短开发周期最好的方法就是通过协作和分工,而在分工协作中,最重要的就是任务分配和交流。接口的出现,就是oo中便于分配和交流的一件自然而然的事情。打个比方,这个世界既有IBM的PC,也有联想的PC,对于用户来说,只要知道他们实现了x86这个接口就行了,就可以放心大胆的用了。这样,联想PC,IBM PC,尽管它们做工作的细节不同,但同样都是规范的PC。对于程序员来说,不管你怎样实现这个功能,只要你用的是这个方法名,别的人就可以放心大胆的用你的方法了,这样,别人就不用等你开发好了,问你“你这个方法叫什么名字,我应该什么调用?”,因为这些都已经被接口规范好了,因此,变化的是你在具体类中实现的细节,不变的是你在接口中定义的方法名和调用方法。这也就是把“不变的和变化的分离开”