把接口想像成一种插座,三相插座或二相插座. 你拿到一个插座,只要你以前用过,你就知道怎么用了,对于里面的具体实现. Who cares?

解决方案 »

  1.   

    interface Drivable {
       public void turnL(float angle);
       public void turnR(float angle);
    //   public void stop();
    //   public void start();
    }class Benzi implements Drivable {
       public void turnL(float angle) {
          this.angle -= angle;
       }
       ...
    }class F1RaceCar implements Drivable {
       public void turnL(float angle) {
           this.angle -= 2 * angle; // more nimble
       }
       ...
    }class Test {
       Drivable aBenzi = new Benzi();
       Drivable aF1    = new FrRaceCar();
       aBenzi.turnL(10.0f);
       aF1.turnL(10.0f);
    }
      

  2.   

    面向对象编程主要是面向接口编程,接口狭义的说就是描述你这个类能够提供
    哪些public方法给用户
    java的interface是只是给你提供一个更抽象更可靠的方法来描述你抽象出
    的接口,同时将你的实现剥离开来。当然你完全可以写一个空类来描述接
    口,然后继承重载来实现接口,可这么做有以下缺点:
    1。限制了继承的个数只能为一,因为这是java语法规定的,
       如果想实现类似(实际不是)多重继承,你必须通过实
       现多个interface
    2。很不安全,比如你在空类中又加了一个方法,但是在下
       面继承的类中没有实现,而编译器不会给任何提示,那
       么客户能够看到这个方法,调用却什么作用也不起,如
       果你是实现一个interface,那么编译器会强制你实现该
       接口,从而保证你对用户负责