好处之一:使设计和实现分离,比如,写一个数据库操作的接口,然后用ms sql, oracle, my sql分别实现。
好处之二,实现多重继承,java类不能多重继承,可以通过接口来实现

解决方案 »

  1.   

    接keen_9(新新):同样一件事情比如销售,老板可能让销售人员A去A公司,销售人员B去B公司,销售这个动作是接口,针对A公司和B公司的不同情况,需要有两个不同的人(不同的实现)去做:)
      

  2.   

    举个例子,在JDK中关于JDBC的sql包中,JDK只需要定义Connection接口,不用定义实现,具体的实现由各个数据库厂商来实现,这就是我们说的Driver,而我们在使用的时候,直接调用Connection接口就行了。要深入理解,建议看看java设计模式相关的文章。
      

  3.   

    interface man{
       public void print(String msg);
    }Class gg{
       public void print(String msg){
          System.out.println("GG say:" + msg)
    }Class mm{
       public void print(String msg){
          System.out.println("MM say:" + msg)
    }我建议你看看petstore里的catalog里的例子,里面用到了interface.
    }
      

  4.   

    lijing725(java无罪,我有罪):
    你的例子中没有显示如何调用接口啊,我调用的时候不知道如何给接口初始化。
      

  5.   

    正是看了interface pet的例子,感到疑惑。interface中定义了抽象方法speak(),class dog,class duck,class cat中分别实现了speak()方法,问题是:直接在这三个class中定义speak()方法不就行了吗,干嘛要定义接口呢,最后调用的还是实例的方法呀?
    1 interface Pet
    2 {
    3     abstract public void speak();
    4 }1 public class Dog implements Pet
    2 {
    3     public void speak()
    4     {
    5         System.out.println("Woof");
    6     }
    7 }1 public class Cat implements Pet
    2 {
    3     public void speak()
    4     {
    5         System.out.println("Meow");
    6     }
    7 }1 public class Duck implements Pet
    2 {
    3     public void speak()
    4     {
    5         System.out.println("Quack");
    6     }
    7 }1 public class Animals
    2 {
    3     public static void main(String args[])
    4     {
    5         Pet myPets[] = new Pet[4];
    6         myPets[0] = new Duck();
    7         myPets[1] = new Cat();
    8         myPets[2] = new Duck();
    9         myPets[3] = new Dog();
    10
    11        for (int index=0; index<4; index++)
    12         myPets[index].speak();
    13     }
    14 }