你说的确实有道理,但是作为一个大的工程时,Interface的作用就体现出来了。
比如JDBC,SUN定了一个接口,然后各个数据库厂家实现就可以了,我们程序员不用知道具体的东西。我说的不一定准确,大概就是这个意思吧

解决方案 »

  1.   

    对象的多形性是java的核心,而继承、抽象类、接口是实现多形性的三个主要方法!
      

  2.   

    我个人经验认为,接口还是为了实现多重继承而设定的
    java不能继承多个class,但是可以扩展多个接口,从而实现多重继承
    搂主所说的:“
    如说Interface是用来使不同类拥有相同的方法的话,那么干吗这么费时,先写一个Interface,然后,再在各个子类中在注意说明各个子类的方法呢(override)?

    其实应该是“Interface是用来使单个类拥有多种不同的方法”,当然这些方法大多都是常规性的需求,比如JDBC中大多的接口,从中就可以看出其作用
    JAVA申明这些接口,但不做实际的实现,这样,不同的中间开发商就可以开发自己的JDBC驱动等,只要实现这些接口就行。所以,如果如楼主的理解,不想费时,直接在接口中实现方法的需求,则会对代码的开发添加许多限制,也会对程序功能有很多影响
    其实接口涉及的东西很多,我只是简单针对楼主的东西说说自己的意见,未必正确
      

  3.   

    Interface是实现Java扩展性能的主要手段。
    看看Thinking in Java中的关于多重继承的例子你会深有体会
      

  4.   

    利用接口和抽象类,可以实现JAVA的多态性,而对象的多态性是面向对象语言的一个很重要的特点,在实际应用中,你会发现它的优点.
    不过这需要时间,需要积累.我起初也和你一样有这个疑问.
      

  5.   

    强烈建议研究一下rmi,再来考虑接口的问题。这可是接口问题的最经典的应用呀。
      

  6.   

    //: StringSortTest.java
    // A generic sorting vector
    import java.util.*;interface Compare {
      boolean lessThan(Object lhs, Object rhs);
      boolean lessThanOrEqual(Object lhs, Object rhs);

    //////////////////////////////////////////////////////////////////////
    class SortVector extends Vector {
      private Compare compare; // To hold the callback
      public SortVector(Compare comp) {
        compare = comp;
      }
      public void sort() {
        quickSort(0, size() - 1);
      }
      private void quickSort(int left, int right) {
        if(right > left) {
          Object o1 = elementAt(right);
          int i = left - 1;
          int j = right;
          while(true) {
            while(compare.lessThan(
                  elementAt(++i), o1))
              ;
            while(j > 0)
              if(compare.lessThanOrEqual(
                 elementAt(--j), o1))
                break; // out of while
            if(i >= j) break;
            swap(i, j);
          }
          swap(i , right);
          quickSort(left, i-1);
          quickSort(i+1, right);
        }
      }
      private void swap(int loc1, int loc2) {
        Object tmp = elementAt(loc1);
        setElementAt(elementAt(loc2), loc1);
        setElementAt(tmp, loc2);
      }

    //////////////////////////////////////////////////////////////////////////
    public class StringSortTest {  static class StringCompare implements Compare {
        public boolean lessThan(Object l, Object r) {
          return ((String)l).toLowerCase().compareTo(
            ((String)r).toLowerCase()) < 0;
        }
        public boolean 
        lessThanOrEqual(Object l, Object r) {
          return ((String)l).toLowerCase().compareTo(
            ((String)r).toLowerCase()) <= 0;
        }
      }  public static void main(String[] args) {
        SortVector sv = 
          new SortVector(new StringCompare());
        sv.addElement("d");
        sv.addElement("A");
        sv.addElement("C");
        sv.addElement("c");
        sv.addElement("b");
        sv.addElement("B");
        sv.addElement("D");
        sv.addElement("a");
        sv.sort(); /*quickSort(0, size() - 1);*/    Enumeration e = sv.elements();
        while(e.hasMoreElements())
          System.out.println(e.nextElement());
      }
    }